activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Joe Niski <joe.ni...@NWEA.org>
Subject Re: durable subscription problems
Date Fri, 27 Aug 2010 00:42:22 GMT
Systematic trial-and-error in configuring the networkConnector lead us 
to a solution on this.

either of the following configurations work flawlessly:


<networkConnectors>
<networkConnector name="${ApplianceID}"
                       userName="${networkConnectorUserName}"
                       password="${networkConnectorPassword}"
                       
uri="static://(ssl://${Central.ServerHostname}:${central_sslPortNumber})"
                       duplex="true"
                       dynamicOnly="true">
<dynamicallyIncludedDestinations>
<queue physicalName="org.nwea.queues.central.>"/>
<topic physicalName="org.nwea.topics.>"/>
</dynamicallyIncludedDestinations>
</networkConnector>
</networkConnectors>


<networkConnectors>
<networkConnector name="${ApplianceID}"
                       userName="${networkConnectorUserName}"
                       password="${networkConnectorPassword}"
                       
uri="static://(ssl://${Central.ServerHostname}:${central_sslPortNumber})"
                       duplex="true"
                       dynamicOnly="true">
</networkConnector>
</networkConnectors>

The <staticallyIncludedDestinations> element in the configuration we 
inherited prevented durable subscriptions from getting established 
altogether.

Setting dynamicOnly=false lead in any scenario lead to messages sent 
from topics on Central to topics on Remote looping back to Central's 
topics (doubling the number of enqueued messages).

The combination of dynamicOnly=false and eliminating 
<staticallyIncludedDestinations> had the additional effect of creating 
additional durable subscriptions on from Central's topics to Remote's.

This was a good learning exercise, but the whole process left me 
scratching my head more than ever at the sparse documentation on durable 
subs, and the misleadingly ambiguous explanation of the dynamicOnly 
attribute - but, it looks like we have a fix, so i'm (cautiously, until 
we're in production) happy.

*Joe Niski
*IS Development |  NWEA

PHONE 503.212.3382  | FAX 503.639.7873

NWEA.ORG <3D%22http://www.nwea.org/%22> ** | Partnering to Help All Kids 
Learn


On 08/16/2010 05:00 PM, Joe Niski wrote:
>
> i have a network of 2 brokers, let's call them "Remote" and "Central", 
> running on ActiveMQ 5.0.3, in a store-and-forward configuration. i 
> inherited this setup, i did not design it, but it seems like a 
> generally solid configuration.
>
> On the Remote broker, there are topics (e.g. 
> "org.nwea.topics.license") that have durable subscriptions to topics 
> of the same name on the Central broker. Messages that are published to 
> topics on the Central broker find their way to Remote really fast - as 
> long as the Remote is online when the message is published. Messages 
> that are published when Remote is offline are never picked up by the 
> remote.
>
> i have a j2ee application that contains MDBs that are annotated to 
> have durable subscriptions to the topics on the Remote broker.
>
> The NetworkConnector configuration in the Remote broker's activemq.xml 
> looks like this:
>
> <networkConnectors>
> <networkConnector name="${ApplianceID}"
>                               userName="${networkConnectorUserName}"
>                               password="${networkConnectorPassword}"
>                               
> uri="static://(ssl://${Central.ServerHostname}:${central_sslPortNumber})"
>                               duplex="true"
>                               dynamicOnly="true">
> <dynamicallyIncludedDestinations>
> <queue physicalName="org.nwea.queues.central.>"/>
> <topic physicalName="org.nwea.topics.>"/>
> </dynamicallyIncludedDestinations>
> <staticallyIncludedDestinations>
> <queue physicalName="org.nwea.queues.central.>"/>
> <topic physicalName="org.nwea.topics.>"/>
> </staticallyIncludedDestinations>
> </networkConnector>
> </networkConnectors>
>
> In reading through the book "ActiveMQ in Action" and reviewing the 
> online docs at http://activemq.apache.org/networks-of-brokers.html, it 
> seems that we should use the default setting for "dynamicOnly", 
> "false" (the docs say "if true, only forward messages if a consumer is 
> active on the connected broker").
>
> However, when i set "dynamicOnly" to false, i see numerous startup 
> errors and NullPointerExceptions in the Remote activemq.log, and 
> connection errors in Central's logs. The Remote log simply reads:
> [DemandForwardingBridge.serviceLocalException]:  Network connection 
> between vm://remotebroker.msg02.nweacolo.pvt#24 and 
> ssl://msg01.se.nweacolo.pvt/192.168.1.94:51617 shutdown due to a local 
> error: java.lang.NullPointerException
>
> With "dynamicOnly" set to true, the log shows that existing durable 
> subscriptions are reconnecting during startup.
>
> Playing with the "prefetchSize" and "networkTTL" attributes for 
> <networkConnector> on Remote (vaguely recommended in the docs) doesn't 
> seem to have any effect.
>
> This seems very similar to this issue from February 2009: 
> http://old.nabble.com/Confusion-about-dynamicOnly-NetworkConnector-property-td22211600.html,

> which didn't seem to get resolved.
>
> Any insight, recommendations, or help are most appreciated.
> --
>
> Joe Niski
> IS Development |  NWEA
> NWEA.ORG<3D%22http://www.nwea.org/%22>  |  Partnering to Help All Kids 
> Learn
>


Mime
View raw message