In that case, you'll want each broker connected simultaneously to both the other two brokers (but not to themselves!), using the static transport instead of masterslave (which is really just syntactic sugar for failover, resulting in a connection to only one of the N underlying URIs). The easiest option is to have have each broker make non-duplex connections to all other brokers, though you can do it with duplex connections with a little more effort; just make sure you don't make two duplex connections, one from each side. On Sep 1, 2015 8:18 AM, "wang" <w...@kai.co.jp> wrote:
> Hi Tim > Thanks for you quick reply. > > What I am trying is to look for a network of brokers (where all brokers > are active and forward messages to each other to reach consumers connected > to the other brokers, and where messages may be delivered out of order > compared to when they were sent). But I donot know how to configure a > network of brokers, so I tried to use master/slave configure. > > I want a network of brokers working with load balancer with single > outside IP address. > > Thanks, > Wang > > On 2015年09月01日 23:05, Tim Bain wrote: > >> >> Are you trying to have a master/slave cluster (where only one broker is >> active and the others are backups, and where message ordering is >> consistent), or are you looking for a network of brokers (where all brokers >> are active and forward messages to each other to reach consumers connected >> to the other brokers, and where messages may be delivered out of order >> compared to when they were sent)? Your path forward depends on which >> you're doing, so let's be sure we're clear on that before we go any further. >> >> On Sep 1, 2015 7:13 AM, "wang" <w...@kai.co.jp <mailto:w...@kai.co.jp>> >> wrote: >> >> Hi Tim >> Thanks for you answer. >> >> I m trying to accomplish here is because I want to put the three >> brokers behind a load balancer. So if one broker down, the others >> could server well. >> >> I read from here >> http://activemq.apache.org/networks-of-brokers.html >> >> on that page it said as the following about MasterSlave Discovery >> >> The URIs are listed in order for: >> MASTER,SLAVE1,SLAVE2...SLAVE(thumbs down) >> >> The same configuration options for|static:|are available >> for|masterslave: >> so I just to put the networkConnector uri to just 10.80.1.1, and >> leave the other 2 and 3 as default configuration. >> | >> >> |Now, I using put the following configure to all the activeMQ >> instances, and now it works fine, I used HAProxy to serve as load >> balancer. Just set dulplex as true and using 61616 not 1883 >> | >> >> | >> <networkConnectors> >> <networkConnector duplex="true" >> uri="masterslave:(tcp://10.80.1.1:61616 >> <http://10.80.1.1:61616>,tcp://10.80.1.2:61616 >> <http://10.80.1.2:61616>,tcp://10.80.1.3:61616 >> <http://10.80.1.3:61616>)"/> >> </networkConnectors> >> | >> >> >> >> Anyway, it works fine now. Although there is an error like the >> following. "prsence" is a topic I added using web console >> the error log as the followings: >> >> WARN | Failed to register topic://presence >> javax.management.InstanceAlreadyExistsException: >> >> org.apache.activemq:brokerName=10.80.1.3,connector=networkConnectors,networkConnectorName=NC,networkBridge=tcp_//10.80.1.1_61616,type=Broker,direction=inbound,destinationType=Topic,destinationName=presence >> at >> >> com.sun.jmx.mbeanserver.Repository.addMBean(Repository.java:437)[:1.7.0_79] >> at >> >> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerWithRepository(DefaultMBeanServerInterceptor.java:1898)[:1.7.0_79] >> at >> >> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerDynamicMBean(DefaultMBeanServerInterceptor.java:966)[:1.7.0_79] >> at >> >> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerObject(DefaultMBeanServerInterceptor.java:900)[:1.7.0_79] >> at >> >> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:324)[:1.7.0_79] >> at >> >> com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:522)[:1.7.0_79] >> at >> >> org.apache.activemq.broker.jmx.ManagementContext.registerMBean(ManagementContext.java:408)[activemq-broker-5.12.0.jar:5.12.0] >> at >> >> org.apache.activemq.broker.jmx.AnnotatedMBean.registerMBean(AnnotatedMBean.java:72)[activemq-broker-5.12.0.jar:5.12.0] >> at >> >> org.apache.activemq.network.MBeanBridgeDestination.onInboundMessage(MBeanBridgeDestination.java:97)[activemq-broker-5.12.0.jar:5.12.0] >> at >> >> org.apache.activemq.network.MBeanNetworkListener.onInboundMessage(MBeanNetworkListener.java:115)[activemq-broker-5.12.0.jar:5.12.0] >> at >> >> org.apache.activemq.network.DemandForwardingBridgeSupport.serviceInboundMessage(DemandForwardingBridgeSupport.java:1683)[activemq-broker-5.12.0.jar:5.12.0] >> at >> >> org.apache.activemq.network.DemandForwardingBridgeSupport.serviceRemoteCommand(DemandForwardingBridgeSupport.java:652)[activemq-broker-5.12.0.jar:5.12.0] >> at >> >> org.apache.activemq.network.DemandForwardingBridgeSupport$3.onCommand(DemandForwardingBridgeSupport.java:225)[activemq-broker-5.12.0.jar:5.12.0] >> at >> >> org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:116)[activemq-client-5.12.0.jar:5.12.0] >> at >> >> org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)[activemq-client-5.12.0.jar:5.12.0] >> at >> >> org.apache.activemq.transport.failover.FailoverTransport$3.onCommand(FailoverTransport.java:213)[activemq-client-5.12.0.jar:5.12.0] >> at >> >> org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113)[activemq-client-5.12.0.jar:5.12.0] >> at >> >> org.apache.activemq.transport.AbstractInactivityMonitor.onCommand(AbstractInactivityMonitor.java:300)[activemq-client-5.12.0.jar:5.12.0] >> at >> >> org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83)[activemq-client-5.12.0.jar:5.12.0] >> at >> >> org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:214)[activemq-client-5.12.0.jar:5.12.0] >> at >> >> org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:196)[activemq-client-5.12.0.jar:5.12.0] >> at java.lang.Thread.run(Thread.java:745)[:1.7.0_79] >> WARN | Transport (tcp://10.80.1.1:61616 <http://10.80.1.1:61616>) >> failed, not attempting to automatically reconnect >> java.io.EOFException >> at >> java.io.DataInputStream.readInt(DataInputStream.java:392)[:1.7.0_79] >> at >> >> org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:267)[activemq-client-5.12.0.jar:5.12.0] >> at >> >> org.apache.activemq.transport.tcp.TcpTransport.readCommand(TcpTransport.java:221)[activemq-client-5.12.0.jar:5.12.0] >> at >> >> org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:213)[activemq-client-5.12.0.jar:5.12.0] >> at >> >> org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:196)[activemq-client-5.12.0.jar:5.12.0] >> at java.lang.Thread.run(Thread.java:745)[:1.7.0_79] >> WARN | Network connection between vm://10.80.1.3#176 >> <http://10.80.1.3#176> and unconnected shutdown due to a remote >> error: java.io.EOFException >> INFO | Establishing network connection from >> vm://10.80.1.3?async=false <http://10.80.1.3?async=false> to >> failover:(tcp://10.80.1.1:61616 >> <http://10.80.1.1:61616>,tcp://10.80.1.2:61616 >> <http://10.80.1.2:61616>,tcp://10.80.1.3:61616 >> )?randomize=false&maxReconnectAttempts=0 >> INFO | 10.80.1.3 bridge to 10.80.1.1 stopped >> INFO | Successfully connected to tcp://10.80.1.1:61616 >> <http://10.80.1.1:61616> >> INFO | Network connection between vm://10.80.1.3#180 >> <http://10.80.1.3#180> and tcp://10.80.1.1:61616 >> <http://10.80.1.1:61616> (10.80.1.1) has been established. >> >> >> >> Thank you Tim. >> >> Do you know why I got the error above? >> >> Regards, >> Wang >> >> On 2015年09月01日 21:42, Tim Bain wrote: >> >>> Why have you configured 10.80.1.1 to connect to itself, and why are >>> 2 and 3 >>> default configurations? >>> >>> More generally, what are you trying to accomplish here? >>> >>> I assume you've read the content at >>> http://activemq.apache.org/masterslave.html, but if not, you need >>> to. >>> On Sep 1, 2015 3:25 AM, "wang"<w...@kai.co.jp> <mailto: >>> w...@kai.co.jp> wrote: >>> >>> Hi guys >>>> >>>> I am Wang and I facing problem when i configured MQTT master-slave >>>> using >>>> activeMQ 5.12 >>>> I have three servers: 10.80.1.1, 10.80.1.2, 10.80.1.3 >>>> I deployed default activeMQ instance onto 10.80.1.2, 10.80.1.3. >>>> And I added the following networkConnectors to server 10.80.1.1 : >>>> >>>> <networkConnectors> >>>> <networkConnector uri="masterslave:(tcp:// >>>> 10.80.1.1:1883 <http://10.80.1.1:1883> >>>> ,tcp://10.80.1.2:1883 <http://10.80.1.2:1883>,tcp://10.80.1.3:1883 >>>> <http://10.80.1.3:1883>)"/> >>>> </networkConnectors> >>>> >>>> I can started server 10.80.1.2 and server 10.80.1.3, but when I try >>>> to >>>> start server 10.80.1.1 >>>> I got the following errors: >>>> >>>> WARN | Transport Connection to: tcp://10.80.1.1:37442 < >>>> http://10.80.1.1:37442> failed: >>>> org.apache.activemq.transport.InactivityIOException: Channel was >>>> inactive >>>> for too (>60000) long: tcp://10.80.1.1:37442 < >>>> http://10.80.1.1:37442> >>>> INFO | Establishing network connection from vm:// >>>> 10.80.1.1?async=false <http://10.80.1.1?async=false> >>>> to failover:(tcp://10.80.1.1:1883 <http://10.80.1.1:1883>,tcp:// >>>> 10.80.1.2:1883 <http://10.80.1.2:1883> >>>> ,tcp://10.80.1.3:1883)?randomize=false&maxReconnectAttempts=0 >>>> INFO | Connector vm://10.80.1.1 <http://10.80.1.1> started >>>> INFO | Successfully connected to tcp://10.80.1.1:1883 < >>>> http://10.80.1.1:1883> >>>> WARN | Exception occurred processing: >>>> MQTTFrame { type: unknown, qos: AT_MOST_ONCE, dup:false }: >>>> org.apache.activemq.transport.mqtt.MQTTProtocolException: Unknown >>>> MQTTFrame >>>> type: 0 >>>> WARN | Transport (tcp://10.80.1.1:1883 <http://10.80.1.1:1883>) >>>> failed, not attempting to >>>> automatically reconnect >>>> java.io.EOFException >>>> at >>>> java.io.DataInputStream.readInt(DataInputStream.java:392)[:1.7.0_79] >>>> at >>>> >>>> org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:267)[activemq-client-5.12.0.jar:5.12.0] >>>> at >>>> >>>> org.apache.activemq.transport.tcp.TcpTransport.readCommand(TcpTransport.java:221)[activemq-client-5.12.0.jar:5.12.0] >>>> at >>>> >>>> org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:213)[activemq-client-5.12.0.jar:5.12.0] >>>> at >>>> >>>> org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:196)[activemq-client-5.12.0.jar:5.12.0] >>>> at java.lang.Thread.run(Thread.java:745)[:1.7.0_79] >>>> INFO | Network connection between vm://10.80.1.1#86 < >>>> http://10.80.1.1#86> and unconnected >>>> shutdown due to a local error: java.lang.Throwable: >>>> remoteBrokerInfo is null >>>> INFO | Connector vm://10.80.1.1 <http://10.80.1.1> stopped >>>> INFO | 10.80.1.1 bridge to Unknown stopped >>>> >>>> who could give me some hints to solve this problem? >>>> >>>> Regards, >>>> Wang >>>> >>>> >>>> >>>> >> -- ********************* >> 株式会社カイクリエイツ 王 兆強 >> 〒150-0001 東京都渋谷区神宮前5-39-6 >> TEL : 03-3486-9119 >> FAX : 03-3486-9800 >> Mail:w...@kai.co.jp <mailto:w...@kai.co.jp> >> ********************* >> >> > -- > ********************* > 株式会社カイクリエイツ 王 兆強 > 〒150-0001 東京都渋谷区神宮前5-39-6 > TEL : 03-3486-9119 > FAX : 03-3486-9800 > Mail: w...@kai.co.jp > ********************* > >