Bernard, I agree with you on this. I've posted detailed questions on clustering/networks or brokers and have met deafening silence. The folks on this list are very helpful and willing to share, so I'll hazard a guess that the clustering/network or brokers feature is simply not ready. I've tried a ton of different configurations, and none of them work the way they're supposed to. The documentation describes a broker cluster as a logical group of clusters, but the behaviour I see is anything but that. For instance, I can set things up so that I've got two brokers who know about each other (via their respective netWorkConnector specifications), but cannot have a producer produce data on one broker and a consumer consume data from the other!
What I have been able to get done is a Master-Slave configuration using MySQL. But that is painfully slow, especially if you're dealing with large messages. What I will do is post my configuration files when I have tweaked and tuned them to the point that they can work in a production environment. Hopefully others will find them useful, even if only as a starting point. Regards, Prashanth Bernhard2 wrote: > > Hello, > > I experienced the same problem in my tests. > > Who can help Sanne and me here? I’m subscribed to this mailing list for > some time now. As soon when it comes to help for topics around “network of > brokers”, I noticed that normally nobody is able (or wants?) to help. Is a > “network of brokers” an uncommon used feature? Regarding to the number of > mails for this topic I do not think so. > > Thanks and have a nice day, > > Bernhard > > > > sanne wrote: >> >> Hi, >> >> I'm prototyping an ActiveMQ network of brokers using 4.0.2 RC 6. The >> setup consists of 2 producers and 2 consumers. At startup things look >> fine. After restarting one of the consumers one or more times it stops >> receiving messages. All the work is done by the remaining cosumer. >> >> The connection dialog of the restarted broker looks o.k., but it doesn't >> receive messages anymore. >> (I don't use JmsTemplate) : >> >> <code> >> 2006-10-31 17:12:53,156 DEBUG [ActiveMQ Task] >> org.apache.activemq.transport.failover.FailoverTransport: Attempting >> connect to: tcp://localhost:20002 >> 2006-10-31 17:12:53,171 DEBUG [ActiveMQ Task] >> org.apache.activemq.transport.WireFormatNegotiator: Sending: >> WireFormatInfo { version=1, properties={TightEncodingEnabled=true, >> TcpNoDelayEnabled=true, SizePrefixDisabled=false, StackTraceEnabled=true, >> MaxInactivityDuration=30000, CacheEnabled=true}, magic=[A,c,t,i,v,e,M,Q]} >> 2006-10-31 17:12:53,171 DEBUG [ActiveMQ Task] >> org.apache.activemq.transport.failover.FailoverTransport: Connection >> established >> 2006-10-31 17:12:53,171 DEBUG [ActiveMQ Transport Server: >> tcp://dtams0365:20002] >> org.apache.activemq.transport.WireFormatNegotiator: Sending: >> WireFormatInfo { version=1, properties={TightEncodingEnabled=true, >> TcpNoDelayEnabled=true, SizePrefixDisabled=false, StackTraceEnabled=true, >> MaxInactivityDuration=30000, CacheEnabled=true}, magic=[A,c,t,i,v,e,M,Q]} >> 2006-10-31 17:12:53,171 DEBUG [ActiveMQ Transport: >> tcp://localhost/127.0.0.1:20002] >> org.apache.activemq.transport.WireFormatNegotiator: Received WireFormat: >> WireFormatInfo { version=1, properties={StackTraceEnabled=true, >> TightEncodingEnabled=true, TcpNoDelayEnabled=true, >> SizePrefixDisabled=false, MaxInactivityDuration=30000, >> CacheEnabled=true}, magic=[A,c,t,i,v,e,M,Q]} >> 2006-10-31 17:12:53,171 DEBUG [ActiveMQ Transport: tcp:///127.0.0.1:1411] >> org.apache.activemq.transport.WireFormatNegotiator: Received WireFormat: >> WireFormatInfo { version=1, properties={StackTraceEnabled=true, >> TightEncodingEnabled=true, TcpNoDelayEnabled=true, >> SizePrefixDisabled=false, MaxInactivityDuration=30000, >> CacheEnabled=true}, magic=[A,c,t,i,v,e,M,Q]} >> 2006-10-31 17:12:53,171 DEBUG [ActiveMQ Transport: >> tcp://localhost/127.0.0.1:20002] >> org.apache.activemq.transport.WireFormatNegotiator: >> tcp://localhost/127.0.0.1:20002 before negotiation: >> OpenWireFormat{version=1, cacheEnabled=false, stackTraceEnabled=false, >> tightEncodingEnabled=false, sizePrefixDisabled=false} >> 2006-10-31 17:12:53,171 DEBUG [ActiveMQ Transport: tcp:///127.0.0.1:1411] >> org.apache.activemq.transport.WireFormatNegotiator: tcp:///127.0.0.1:1411 >> before negotiation: OpenWireFormat{version=1, cacheEnabled=false, >> stackTraceEnabled=false, tightEncodingEnabled=false, >> sizePrefixDisabled=false} >> 2006-10-31 17:12:53,171 DEBUG [ActiveMQ Transport: >> tcp://localhost/127.0.0.1:20002] >> org.apache.activemq.transport.WireFormatNegotiator: >> tcp://localhost/127.0.0.1:20002 after negotiation: >> OpenWireFormat{version=1, cacheEnabled=true, stackTraceEnabled=true, >> tightEncodingEnabled=true, sizePrefixDisabled=false} >> 2006-10-31 17:12:53,171 DEBUG [ActiveMQ Transport: tcp:///127.0.0.1:1411] >> org.apache.activemq.transport.WireFormatNegotiator: tcp:///127.0.0.1:1411 >> after negotiation: OpenWireFormat{version=1, cacheEnabled=true, >> stackTraceEnabled=true, tightEncodingEnabled=true, >> sizePrefixDisabled=false} >> 2006-10-31 17:12:53,218 DEBUG [ActiveMQ Transport Server: >> tcp://dtams0365:20002] >> org.apache.activemq.transport.WireFormatNegotiator: Sending: >> WireFormatInfo { version=1, properties={TightEncodingEnabled=true, >> TcpNoDelayEnabled=true, SizePrefixDisabled=false, StackTraceEnabled=true, >> MaxInactivityDuration=30000, CacheEnabled=true}, magic=[A,c,t,i,v,e,M,Q]} >> 2006-10-31 17:12:53,218 DEBUG [ActiveMQ Transport: tcp:///127.0.0.1:1406] >> org.apache.activemq.transport.WireFormatNegotiator: Received WireFormat: >> WireFormatInfo { version=1, properties={StackTraceEnabled=true, >> TightEncodingEnabled=true, TcpNoDelayEnabled=true, >> SizePrefixDisabled=false, MaxInactivityDuration=30000, >> CacheEnabled=true}, magic=[A,c,t,i,v,e,M,Q]} >> 2006-10-31 17:12:53,218 DEBUG [ActiveMQ Transport: tcp:///127.0.0.1:1406] >> org.apache.activemq.transport.WireFormatNegotiator: tcp:///127.0.0.1:1406 >> before negotiation: OpenWireFormat{version=1, cacheEnabled=false, >> stackTraceEnabled=false, tightEncodingEnabled=false, >> sizePrefixDisabled=false} >> 2006-10-31 17:12:53,218 DEBUG [ActiveMQ Transport: tcp:///127.0.0.1:1406] >> org.apache.activemq.transport.WireFormatNegotiator: tcp:///127.0.0.1:1406 >> after negotiation: OpenWireFormat{version=1, cacheEnabled=true, >> stackTraceEnabled=true, tightEncodingEnabled=true, >> sizePrefixDisabled=false} >> 2006-10-31 17:12:53,234 DEBUG [ActiveMQ Transport Server: >> tcp://dtams0365:20002] >> org.apache.activemq.transport.WireFormatNegotiator: Sending: >> WireFormatInfo { version=1, properties={TightEncodingEnabled=true, >> TcpNoDelayEnabled=true, SizePrefixDisabled=false, StackTraceEnabled=true, >> MaxInactivityDuration=30000, CacheEnabled=true}, magic=[A,c,t,i,v,e,M,Q]} >> 2006-10-31 17:12:53,234 DEBUG [ActiveMQ Transport: tcp:///127.0.0.1:1407] >> org.apache.activemq.transport.WireFormatNegotiator: Received WireFormat: >> WireFormatInfo { version=1, properties={StackTraceEnabled=true, >> TightEncodingEnabled=true, TcpNoDelayEnabled=true, >> SizePrefixDisabled=false, MaxInactivityDuration=30000, >> CacheEnabled=true}, magic=[A,c,t,i,v,e,M,Q]} >> 2006-10-31 17:12:53,234 DEBUG [ActiveMQ Transport: tcp:///127.0.0.1:1407] >> org.apache.activemq.transport.WireFormatNegotiator: tcp:///127.0.0.1:1407 >> before negotiation: OpenWireFormat{version=1, cacheEnabled=false, >> stackTraceEnabled=false, tightEncodingEnabled=false, >> sizePrefixDisabled=false} >> 2006-10-31 17:12:53,234 DEBUG [ActiveMQ Transport: tcp:///127.0.0.1:1407] >> org.apache.activemq.transport.WireFormatNegotiator: tcp:///127.0.0.1:1407 >> after negotiation: OpenWireFormat{version=1, cacheEnabled=true, >> stackTraceEnabled=true, tightEncodingEnabled=true, >> sizePrefixDisabled=false} >> 2006-10-31 17:12:53,234 DEBUG [Thread-3] >> org.apache.activemq.broker.region.AbstractRegion: Adding destination: >> topic://ActiveMQ.Advisory.Topic >> 2006-10-31 17:12:53,234 INFO [Thread-4] >> org.apache.activemq.network.DemandForwardingBridge: Network connection >> between vm://consumer-002#2 and tcp://localhost:10002(producer-002) has >> been established. >> 2006-10-31 17:12:53,234 INFO [Thread-3] >> org.apache.activemq.network.DemandForwardingBridge: Network connection >> between vm://consumer-002#0 and tcp://localhost:10001(producer-001) has >> been established. >> 2006-10-31 17:12:53,234 DEBUG [main] >> org.apache.activemq.transport.failover.FailoverTransport: Started. >> 2006-10-31 17:12:53,265 DEBUG [ActiveMQ Transport: tcp:///127.0.0.1:1407] >> org.apache.activemq.broker.region.AbstractRegion: Adding destination: >> queue://jmsExample >> 2006-10-31 17:12:53,281 DEBUG [ActiveMQ Transport: >> tcp://localhost/127.0.0.1:10002] >> org.apache.activemq.broker.region.AbstractRegion: Adding destination: >> queue://jmsExample >> 2006-10-31 17:12:53,281 DEBUG [ActiveMQ Transport: >> tcp://localhost/127.0.0.1:10001] >> org.apache.activemq.broker.region.AbstractRegion: Adding destination: >> queue://jmsExample >> 2006-10-31 17:12:53,281 DEBUG [ActiveMQ Transport: tcp:///127.0.0.1:1407] >> org.apache.activemq.broker.region.AbstractRegion: Adding destination: >> topic://ActiveMQ.Advisory.Queue >> 2006-10-31 17:12:53,296 DEBUG [ActiveMQ Transport: >> tcp://localhost/127.0.0.1:10002] >> org.apache.activemq.broker.region.AbstractRegion: Adding destination: >> topic://ActiveMQ.Advisory.Consumer.Queue.jmsExample >> 2006-10-31 17:12:53,296 DEBUG [ActiveMQ Transport: >> tcp://localhost/127.0.0.1:10002] >> org.apache.activemq.network.DemandForwardingBridge: Forwarding sub on >> vm://consumer-002#2 from producer-002 : ConsumerInfo {commandId = 3, >> responseRequired = false, consumerId = >> ID:dtams0365-1365-1162311147296-3:1:1:1, destination = >> queue://jmsExample, prefetchSize = 1000, maximumPendingMessageLimit = 0, >> browser = false, dispatchAsync = true, selector = null, subcriptionName = >> null, noLocal = false, exclusive = false, retroactive = false, priority = >> 0, brokerPath = [ID:dtams0365-1371-1162311149155-0:0, >> ID:dtams0365-1365-1162311147296-0:0], optimizedAcknowledge = false, >> noRangeAcks = false, additionalPredicate = null} >> 2006-10-31 17:12:53,296 DEBUG [ActiveMQ Transport: >> tcp://localhost/127.0.0.1:10001] >> org.apache.activemq.network.DemandForwardingBridge: Forwarding sub on >> vm://consumer-002#0 from producer-001 : ConsumerInfo {commandId = 3, >> responseRequired = false, consumerId = >> ID:dtams0365-1356-1162311143827-3:1:1:1, destination = >> queue://jmsExample, prefetchSize = 1000, maximumPendingMessageLimit = 0, >> browser = false, dispatchAsync = true, selector = null, subcriptionName = >> null, noLocal = false, exclusive = false, retroactive = false, priority = >> 0, brokerPath = [ID:dtams0365-1371-1162311149155-0:0, >> ID:dtams0365-1356-1162311143827-0:0], optimizedAcknowledge = false, >> noRangeAcks = false, additionalPredicate = null} >> </code> >> >> >> The configuration of the brokers is: >> >> <code> >> <broker brokerName="consumer-001" persistent="false" useJmx="false"> >> >> <transportConnectors> >> <transportConnector uri="tcp://localhost:20001"/> >> </transportConnectors> >> >> <networkConnectors> >> <networkConnector networkTTL="3" name="to-producer-001" >> dynamicOnly="true" conduitSubscriptions="true" >> uri="static:(tcp://localhost:10001)" failover="true"/> >> <networkConnector networkTTL="3" name="to-producer-002" >> dynamicOnly="true" conduitSubscriptions="true" >> uri="static:(tcp://localhost:10002)" failover="true"/> >> </networkConnectors> >> >> <persistenceAdapter> >> <memoryPersistenceAdapter/> >> </persistenceAdapter> >> >> </broker> >> >> <broker brokerName="consumer-002" persistent="false" useJmx="false"> >> >> <transportConnectors> >> <transportConnector uri="tcp://localhost:20002"/> >> </transportConnectors> >> <broker brokerName="producer-001" persistent="false" useJmx="false"> >> >> <transportConnectors> >> <transportConnector uri="tcp://localhost:10001"/> >> </transportConnectors> >> >> <networkConnectors> >> <networkConnector networkTTL="3" name="to-consumer-001" >> dynamicOnly="true" conduitSubscriptions="true" >> uri="static:(tcp://localhost:20001)" failover="true"/> >> <networkConnector networkTTL="3" name="to-consumer-002" >> dynamicOnly="true" conduitSubscriptions="true" >> uri="static:(tcp://localhost:20002)" failover="true"/> >> </networkConnectors> >> >> <persistenceAdapter> >> <memoryPersistenceAdapter/> >> </persistenceAdapter> >> >> </broker> >> >> <broker brokerName="producer-001" persistent="false" useJmx="false"> >> >> <transportConnectors> >> <transportConnector uri="tcp://localhost:10001"/> >> </transportConnectors> >> >> <networkConnectors> >> <networkConnector networkTTL="3" name="to-consumer-001" >> dynamicOnly="true" conduitSubscriptions="true" >> uri="static:(tcp://localhost:20001)" failover="true"/> >> <networkConnector networkTTL="3" name="to-consumer-002" >> dynamicOnly="true" conduitSubscriptions="true" >> uri="static:(tcp://localhost:20002)" failover="true"/> >> </networkConnectors> >> >> <persistenceAdapter> >> <memoryPersistenceAdapter/> >> </persistenceAdapter> >> >> </broker> >> >> <broker brokerName="producer-002" persistent="false" useJmx="false"> >> >> <transportConnectors> >> <transportConnector uri="tcp://localhost:10002"/> >> </transportConnectors> >> >> <networkConnectors> >> <networkConnector name="to-consumer-001" networkTTL="3" >> dynamicOnly="true" conduitSubscriptions="true" >> uri="static:(tcp://localhost:20001)" failover="true"/> >> <networkConnector name="to-consumer-002" networkTTL="3" >> dynamicOnly="true" conduitSubscriptions="true" >> uri="static:(tcp://localhost:20002)" failover="true"/> >> </networkConnectors> >> >> <persistenceAdapter> >> <memoryPersistenceAdapter/> >> </persistenceAdapter> >> >> </broker> >> <networkConnectors> >> <networkConnector networkTTL="3" name="to-producer-001" >> dynamicOnly="true" conduitSubscriptions="true" >> uri="static:(tcp://localhost:10001)" failover="true"/> >> <networkConnector networkTTL="3" name="to-producer-002" >> dynamicOnly="true" conduitSubscriptions="true" >> uri="static:(tcp://localhost:10002)" failover="true"/> >> </networkConnectors> >> >> <persistenceAdapter> >> <memoryPersistenceAdapter/> >> </persistenceAdapter> >> >> </broker> >> </code> >> >> >> Has anyone experienced this before, and maybe solved it? >> >> Regards, >> >> Sanne >> >> >> > > -- View this message in context: http://www.nabble.com/Network-of-brokers-tf2546736.html#a8000961 Sent from the ActiveMQ - User mailing list archive at Nabble.com.