ActiveMQ 集群设置错误
Errors on ActiveMQ cluster setup
我正在尝试使用静态模式设置 ActiveMQ 集群。我目前只有 2 个实例。一个是TE5021 / 192.165.20.21,有这个配置文件(摘录):
<beans>
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="te5021" dataDirectory="${activemq.data}" persistent="false" schedulePeriodForDestinationPurge="10000" useJmx="false">
<networkConnectors>
<networkConnector uri="static:(tcp://192.165.20.22:61616)" dynamicOnly="true" networkTTL="3" duplex="true" prefetchSize="1" decreaseNetworkConsumerPriority="false"/>
</networkConnectors>
<transportConnectors>
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&wireFormat.maxFrameSize=154857600&timeout=10000&soTimeout=10000" enableStatusMonitor="true" rebalanceClusterClients="true" updateClusterClients="true" updateClusterClientsOnRemove="true"/>
</transportConnectors>
</broker>
</beans>
第二个是 TE5022 / 192.165.20.22 具有此配置文件(提取):
<beans>
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="te5022" dataDirectory="${activemq.data}" persistent="false" schedulePeriodForDestinationPurge="10000" useJmx="false">
<networkConnectors>
<networkConnector uri="static:(tcp://192.165.20.21:61616)" dynamicOnly="true" networkTTL="3" duplex="true" prefetchSize="1" decreaseNetworkConsumerPriority="false"/>
</networkConnectors>
<transportConnectors>
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&wireFormat.maxFrameSize=154857600&timeout=10000&soTimeout=10000" enableStatusMonitor="true" rebalanceClusterClients="true" updateClusterClients="true" updateClusterClientsOnRemove="true"/>
</transportConnectors>
</broker>
</beans>
在第一个上,一切似乎都按预期进行。但是在第二个上,它向我显示了这些错误:
2021-11-02 10:33:23,680 | INFO | Establishing network connection from vm://te5022 to tcp://192.165.20.21:61616 | org.apache.activemq.network.DiscoveryNetworkConnector | ActiveMQ Task-1
2021-11-02 10:33:23,692 | WARN | Failed to add Connection id=te5022->te5021-38812-1635845361826-27:1, clientId=NC_te5021_inbound_te5022, clientIP=vm://te5022#52 due to Broker: te5022 - Client: NC_te5021_inbound_te5022 already connected from vm://te5022#12 | org.apache.activemq.broker.TransportConnection | triggerStartAsyncNetworkBridgeCreation: remoteBroker=tcp:///192.165.20.21:61616@42870, localBroker= vm://te5022#52
2021-11-02 10:33:23,693 | INFO | Network connection between vm://te5022#52 and tcp:///192.165.20.21:61616@42870 shutdown due to a local error: {} | org.apache.activemq.network.DemandForwardingBridgeSupport | triggerStartAsyncNetworkBridgeCreation: remoteBroker=tcp:///192.165.20.21:61616@42870, localBroker= vm://te5022#52
javax.jms.InvalidClientIDException: Broker: te5022 - Client: NC_te5021_inbound_te5022 already connected from vm://te5022#12
at org.apache.activemq.broker.region.RegionBroker.addConnection(RegionBroker.java:265)
at org.apache.activemq.broker.jmx.ManagedRegionBroker.addConnection(ManagedRegionBroker.java:227)
at org.apache.activemq.broker.BrokerFilter.addConnection(BrokerFilter.java:99)
at org.apache.activemq.advisory.AdvisoryBroker.addConnection(AdvisoryBroker.java:119)
at org.apache.activemq.broker.BrokerFilter.addConnection(BrokerFilter.java:99)
at org.apache.activemq.broker.BrokerFilter.addConnection(BrokerFilter.java:99)
at org.apache.activemq.broker.BrokerFilter.addConnection(BrokerFilter.java:99)
at org.apache.activemq.broker.TransportConnection.processAddConnection(TransportConnection.java:844)
at org.apache.activemq.command.ConnectionInfo.visit(ConnectionInfo.java:139)
at org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:331)
at org.apache.activemq.broker.TransportConnection.onCommand(TransportConnection.java:200)
at org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:116)
at org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)
at org.apache.activemq.transport.vm.VMTransport.doDispatch(VMTransport.java:165)
at org.apache.activemq.transport.vm.VMTransport.dispatch(VMTransport.java:157)
at org.apache.activemq.transport.vm.VMTransport.oneway(VMTransport.java:134)
at org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:68)
at org.apache.activemq.transport.ResponseCorrelator.asyncRequest(ResponseCorrelator.java:81)
at org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:86)
at org.apache.activemq.network.DemandForwardingBridgeSupport.startLocalBridge(DemandForwardingBridgeSupport.java:510)
at org.apache.activemq.network.DemandForwardingBridgeSupport.doStartLocalAndRemoteBridges(DemandForwardingBridgeSupport.java:462)
at org.apache.activemq.network.DemandForwardingBridgeSupport.access0(DemandForwardingBridgeSupport.java:113)
at org.apache.activemq.network.DemandForwardingBridgeSupport.run(DemandForwardingBridgeSupport.java:372)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
at java.base/java.lang.Thread.run(Thread.java:832)
2021-11-02 10:33:23,719 | INFO | te5022 bridge to te5021 stopped | org.apache.activemq.network.DemandForwardingBridgeSupport | ActiveMQ BrokerService[te5022] Task-9
2021-11-02 10:33:25,705 | INFO | Stopping vm://te5022#52 because Failed with SecurityException: Broker: te5022 - Client: NC_te5021_inbound_te5022 already connected from vm://te5022#12 | org.apache.activemq.broker.TransportConnection | ActiveMQ BrokerService[te5022] Task-10
我做错了什么?
好的,问题出在这里:我确实设置了 duplex = true 的网络连接器。
在我的例子中,设置 duplex = false,并将代理属性 networkConnectorStartAsync 设置为 true 是解决方案。
我正在尝试使用静态模式设置 ActiveMQ 集群。我目前只有 2 个实例。一个是TE5021 / 192.165.20.21,有这个配置文件(摘录):
<beans>
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="te5021" dataDirectory="${activemq.data}" persistent="false" schedulePeriodForDestinationPurge="10000" useJmx="false">
<networkConnectors>
<networkConnector uri="static:(tcp://192.165.20.22:61616)" dynamicOnly="true" networkTTL="3" duplex="true" prefetchSize="1" decreaseNetworkConsumerPriority="false"/>
</networkConnectors>
<transportConnectors>
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&wireFormat.maxFrameSize=154857600&timeout=10000&soTimeout=10000" enableStatusMonitor="true" rebalanceClusterClients="true" updateClusterClients="true" updateClusterClientsOnRemove="true"/>
</transportConnectors>
</broker>
</beans>
第二个是 TE5022 / 192.165.20.22 具有此配置文件(提取):
<beans>
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="te5022" dataDirectory="${activemq.data}" persistent="false" schedulePeriodForDestinationPurge="10000" useJmx="false">
<networkConnectors>
<networkConnector uri="static:(tcp://192.165.20.21:61616)" dynamicOnly="true" networkTTL="3" duplex="true" prefetchSize="1" decreaseNetworkConsumerPriority="false"/>
</networkConnectors>
<transportConnectors>
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&wireFormat.maxFrameSize=154857600&timeout=10000&soTimeout=10000" enableStatusMonitor="true" rebalanceClusterClients="true" updateClusterClients="true" updateClusterClientsOnRemove="true"/>
</transportConnectors>
</broker>
</beans>
在第一个上,一切似乎都按预期进行。但是在第二个上,它向我显示了这些错误:
2021-11-02 10:33:23,680 | INFO | Establishing network connection from vm://te5022 to tcp://192.165.20.21:61616 | org.apache.activemq.network.DiscoveryNetworkConnector | ActiveMQ Task-1
2021-11-02 10:33:23,692 | WARN | Failed to add Connection id=te5022->te5021-38812-1635845361826-27:1, clientId=NC_te5021_inbound_te5022, clientIP=vm://te5022#52 due to Broker: te5022 - Client: NC_te5021_inbound_te5022 already connected from vm://te5022#12 | org.apache.activemq.broker.TransportConnection | triggerStartAsyncNetworkBridgeCreation: remoteBroker=tcp:///192.165.20.21:61616@42870, localBroker= vm://te5022#52
2021-11-02 10:33:23,693 | INFO | Network connection between vm://te5022#52 and tcp:///192.165.20.21:61616@42870 shutdown due to a local error: {} | org.apache.activemq.network.DemandForwardingBridgeSupport | triggerStartAsyncNetworkBridgeCreation: remoteBroker=tcp:///192.165.20.21:61616@42870, localBroker= vm://te5022#52
javax.jms.InvalidClientIDException: Broker: te5022 - Client: NC_te5021_inbound_te5022 already connected from vm://te5022#12
at org.apache.activemq.broker.region.RegionBroker.addConnection(RegionBroker.java:265)
at org.apache.activemq.broker.jmx.ManagedRegionBroker.addConnection(ManagedRegionBroker.java:227)
at org.apache.activemq.broker.BrokerFilter.addConnection(BrokerFilter.java:99)
at org.apache.activemq.advisory.AdvisoryBroker.addConnection(AdvisoryBroker.java:119)
at org.apache.activemq.broker.BrokerFilter.addConnection(BrokerFilter.java:99)
at org.apache.activemq.broker.BrokerFilter.addConnection(BrokerFilter.java:99)
at org.apache.activemq.broker.BrokerFilter.addConnection(BrokerFilter.java:99)
at org.apache.activemq.broker.TransportConnection.processAddConnection(TransportConnection.java:844)
at org.apache.activemq.command.ConnectionInfo.visit(ConnectionInfo.java:139)
at org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:331)
at org.apache.activemq.broker.TransportConnection.onCommand(TransportConnection.java:200)
at org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:116)
at org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)
at org.apache.activemq.transport.vm.VMTransport.doDispatch(VMTransport.java:165)
at org.apache.activemq.transport.vm.VMTransport.dispatch(VMTransport.java:157)
at org.apache.activemq.transport.vm.VMTransport.oneway(VMTransport.java:134)
at org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:68)
at org.apache.activemq.transport.ResponseCorrelator.asyncRequest(ResponseCorrelator.java:81)
at org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:86)
at org.apache.activemq.network.DemandForwardingBridgeSupport.startLocalBridge(DemandForwardingBridgeSupport.java:510)
at org.apache.activemq.network.DemandForwardingBridgeSupport.doStartLocalAndRemoteBridges(DemandForwardingBridgeSupport.java:462)
at org.apache.activemq.network.DemandForwardingBridgeSupport.access0(DemandForwardingBridgeSupport.java:113)
at org.apache.activemq.network.DemandForwardingBridgeSupport.run(DemandForwardingBridgeSupport.java:372)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
at java.base/java.lang.Thread.run(Thread.java:832)
2021-11-02 10:33:23,719 | INFO | te5022 bridge to te5021 stopped | org.apache.activemq.network.DemandForwardingBridgeSupport | ActiveMQ BrokerService[te5022] Task-9
2021-11-02 10:33:25,705 | INFO | Stopping vm://te5022#52 because Failed with SecurityException: Broker: te5022 - Client: NC_te5021_inbound_te5022 already connected from vm://te5022#12 | org.apache.activemq.broker.TransportConnection | ActiveMQ BrokerService[te5022] Task-10
我做错了什么?
好的,问题出在这里:我确实设置了 duplex = true 的网络连接器。
在我的例子中,设置 duplex = false,并将代理属性 networkConnectorStartAsync 设置为 true 是解决方案。