You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by AlB <Br...@avaya.com> on 2007/06/14 23:09:43 UTC

Re: QueueBrowser with Network of Brokers

I have a network of 3 brokers using 4.0.1 where the maximum hop is 1 (a star
configuration, a-b-c, where messages travel from a to b or b to c via the
same queue.) Messages are not transacted by either the publishers or the
consumer.

I see this error frequently. Sometimes the error will happen at startup, or
during the transmition of thousands of messages, or when a message hasn't
gone through in hours (and tens of thousands were earlier successfully
transmitted). Once it happens, subsequent messages remain on the queue on
the broker where the publisher is local (as seen by hermes). 

I have not been able to determine a specific action that causes this to
happen.

The only thing that seems to make the system work is to restart the brokers
on all three machines. However, the error usually reoccurs within 0-12
hours.

Are there configuration options that can be used to avoid this error?

Here are the network specs:

system B:
    <networkConnector conduitSubscriptions="false" dynamicOnly="false"
failover="true" name="pickling" networkTTL="3"
uri="static:(ssl://192.168.131.64:61817)"/>
<networkConnector conduitSubscriptions="false" dynamicOnly="false"
failover="true" name="pez" networkTTL="3"
uri="static:(ssl://192.168.86.155:61817)"/>
</networkConnectors>

System A/C:
    <networkConnector conduitSubscriptions="false" dynamicOnly="false"
failover="true" name="jolt" networkTTL="3"
uri="static:(ssl://192.168.86.156:61817)"/>


davem wrote:
> 
> Here is the stack trace:
> 
> java.lang.NullPointerException
>         at
> org.apache.activemq.network.DemandForwardingBridgeSupport.configureMessage(DemandForwardingBridgeSupport.java:465)
>         at
> org.apache.activemq.network.DemandForwardingBridgeSupport.serviceLocalCommand(DemandForwardingBridgeSupport.java:486)
>         at
> org.apache.activemq.network.DemandForwardingBridgeSupport$1.onCommand(DemandForwardingBridgeSupport.java:121)
>         at
> org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:95)
>         at
> org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:65)
>         at
> org.apache.activemq.transport.vm.VMTransport.syncOneWay(VMTransport.java:96)
>         at
> org.apache.activemq.transport.vm.VMTransport.oneWay(VMTransport.java:83)
>         at
> org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:43)
>         at
> org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60)
>         at
> org.apache.activemq.broker.TransportConnection.dispatch(TransportConnection.java:105)
>         at
> org.apache.activemq.broker.TransportConnection.processDispatch(TransportConnection.java:772)
>         at
> org.apache.activemq.broker.TransportConnection.iterate(TransportConnection.java:788)
>         at
> org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:111)
>         at
> org.apache.activemq.thread.PooledTaskRunner.access$100(PooledTaskRunner.java:26)
>         at
> org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:44)
>         at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
>         at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
>         at java.lang.Thread.run(Thread.java:595)
> 
> The "receiver" application has a broker:
>   <broker brokerName="receiver" persistent="false" useJmx="false">
>     <transportConnectors>
>       <transportConnector uri="tcp://localhost:7002"/>
>     </transportConnectors>
> 
>     <networkConnectors>
>       <networkConnector uri="static:(tcp://localhost:7001)"
> failover="true"/>
>     </networkConnectors>
> 
>     <persistenceAdapter>
>       <memoryPersistenceAdapter/>
>     </persistenceAdapter>
>   </broker>
> 
> The "sender" application has a broker:
>   <broker brokerName="sender" persistent="false" useJmx="false">
>     <transportConnectors>
>       <transportConnector uri="tcp://localhost:7001"/>
>     </transportConnectors>
> 
>     <networkConnectors>
>       <networkConnector uri="static:(tcp://localhost:7002)"
> failover="true"/>
>     </networkConnectors>
> 
>     <persistenceAdapter>
>       <memoryPersistenceAdapter/>
>     </persistenceAdapter>
>   </broker>
> 
> A third "browser" application uses a connection factory with a url like
> "tcp://localhost:7002".  If the browser connects to the "receiver"
> application and creates a QueueBrowser, then that exception is thrown in
> the "sender" application.
> 
> 
> James.Strachan wrote:
>> 
>> On 3/6/07, davem <dm...@gmail.com> wrote:
>>>
>>> Hello,
>>>
>>> Should a QueueBrowser work against a queue in a broker that is part of a
>>> network of brokers in 4.1.0?
>> 
>> Sure.
>> 
>>>  If I have two brokers in a network (each with
>>> a static network connector to the other) and I browse a queue on one of
>>> the
>>> two, then an INFO message is logged on the other broker that the
>>> connection
>>> between the brokers failed and has been recreated.  The cause of the
>>> failure
>>> is a NullPointerException from
>>> DemandForwardingBridgeSupport.configureMessage.
>> 
>> Do you have a full stack trace? Sounds like a bug.
>> 
>> -- 
>> 
>> James
>> -------
>> http://radio.weblogs.com/0112098/
>> 
>> 
> 
> 

-- 
View this message in context: http://www.nabble.com/QueueBrowser-with-Network-of-Brokers-tf3356541s2354.html#a11128713
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Re: QueueBrowser with Network of Brokers

Posted by "A. Gregory Rabil" <gr...@ins.com>.
I am seeing this same problem in AMQ 4.1.1 and 4.1.2.  Is there any
resolution to this issue?

Regards,
Greg Rabil


AlB wrote:
> 
> I have a network of 3 brokers using 4.0.1 where the maximum hop is 1 (a
> star configuration, a-b-c, where messages travel from a to b or b to c via
> the same queue.) Messages are not transacted by either the publishers or
> the consumer.
> 
> I see this error frequently. Sometimes the error will happen at startup,
> or during the transmition of thousands of messages, or when a message
> hasn't gone through in hours (and tens of thousands were earlier
> successfully transmitted). Once it happens, subsequent messages remain on
> the queue on the broker where the publisher is local (as seen by hermes). 
> 
> I have not been able to determine a specific action that causes this to
> happen.
> 
> The only thing that seems to make the system work is to restart the
> brokers on all three machines. However, the error usually reoccurs within
> 0-12 hours.
> 
> Are there configuration options that can be used to avoid this error?
> 
> Here are the network specs:
> 
> system B:
>     <networkConnector conduitSubscriptions="false" dynamicOnly="false"
> failover="true" name="pickling" networkTTL="3"
> uri="static:(ssl://192.168.131.64:61817)"/>
> <networkConnector conduitSubscriptions="false" dynamicOnly="false"
> failover="true" name="pez" networkTTL="3"
> uri="static:(ssl://192.168.86.155:61817)"/>
> </networkConnectors>
> 
> System A/C:
>     <networkConnector conduitSubscriptions="false" dynamicOnly="false"
> failover="true" name="jolt" networkTTL="3"
> uri="static:(ssl://192.168.86.156:61817)"/>
> 
> 
> davem wrote:
>> 
>> Here is the stack trace:
>> 
>> java.lang.NullPointerException
>>         at
>> org.apache.activemq.network.DemandForwardingBridgeSupport.configureMessage(DemandForwardingBridgeSupport.java:465)
>>         at
>> org.apache.activemq.network.DemandForwardingBridgeSupport.serviceLocalCommand(DemandForwardingBridgeSupport.java:486)
>>         at
>> org.apache.activemq.network.DemandForwardingBridgeSupport$1.onCommand(DemandForwardingBridgeSupport.java:121)
>>         at
>> org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:95)
>>         at
>> org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:65)
>>         at
>> org.apache.activemq.transport.vm.VMTransport.syncOneWay(VMTransport.java:96)
>>         at
>> org.apache.activemq.transport.vm.VMTransport.oneWay(VMTransport.java:83)
>>         at
>> org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:43)
>>         at
>> org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60)
>>         at
>> org.apache.activemq.broker.TransportConnection.dispatch(TransportConnection.java:105)
>>         at
>> org.apache.activemq.broker.TransportConnection.processDispatch(TransportConnection.java:772)
>>         at
>> org.apache.activemq.broker.TransportConnection.iterate(TransportConnection.java:788)
>>         at
>> org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:111)
>>         at
>> org.apache.activemq.thread.PooledTaskRunner.access$100(PooledTaskRunner.java:26)
>>         at
>> org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:44)
>>         at
>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
>>         at
>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
>>         at java.lang.Thread.run(Thread.java:595)
>> 
>> The "receiver" application has a broker:
>>   <broker brokerName="receiver" persistent="false" useJmx="false">
>>     <transportConnectors>
>>       <transportConnector uri="tcp://localhost:7002"/>
>>     </transportConnectors>
>> 
>>     <networkConnectors>
>>       <networkConnector uri="static:(tcp://localhost:7001)"
>> failover="true"/>
>>     </networkConnectors>
>> 
>>     <persistenceAdapter>
>>       <memoryPersistenceAdapter/>
>>     </persistenceAdapter>
>>   </broker>
>> 
>> The "sender" application has a broker:
>>   <broker brokerName="sender" persistent="false" useJmx="false">
>>     <transportConnectors>
>>       <transportConnector uri="tcp://localhost:7001"/>
>>     </transportConnectors>
>> 
>>     <networkConnectors>
>>       <networkConnector uri="static:(tcp://localhost:7002)"
>> failover="true"/>
>>     </networkConnectors>
>> 
>>     <persistenceAdapter>
>>       <memoryPersistenceAdapter/>
>>     </persistenceAdapter>
>>   </broker>
>> 
>> A third "browser" application uses a connection factory with a url like
>> "tcp://localhost:7002".  If the browser connects to the "receiver"
>> application and creates a QueueBrowser, then that exception is thrown in
>> the "sender" application.
>> 
>> 
>> James.Strachan wrote:
>>> 
>>> On 3/6/07, davem <dm...@gmail.com> wrote:
>>>>
>>>> Hello,
>>>>
>>>> Should a QueueBrowser work against a queue in a broker that is part of
>>>> a
>>>> network of brokers in 4.1.0?
>>> 
>>> Sure.
>>> 
>>>>  If I have two brokers in a network (each with
>>>> a static network connector to the other) and I browse a queue on one of
>>>> the
>>>> two, then an INFO message is logged on the other broker that the
>>>> connection
>>>> between the brokers failed and has been recreated.  The cause of the
>>>> failure
>>>> is a NullPointerException from
>>>> DemandForwardingBridgeSupport.configureMessage.
>>> 
>>> Do you have a full stack trace? Sounds like a bug.
>>> 
>>> -- 
>>> 
>>> James
>>> -------
>>> http://radio.weblogs.com/0112098/
>>> 
>>> 
>> 
>> 
> 
> 

-- 
View this message in context: http://www.nabble.com/QueueBrowser-with-Network-of-Brokers-tp9335320p22292440.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.