Hi, I have a question about the behaviour of network of brokers in ActiveMQ
Classic 5.18.7.
I have two brokers connected in NoB with several duplex bridges. However,
on start up, for NetworkConnector nc1 on broker-1, it keeps shutting down
after start but on broker-2 the responder was able to start up correctly.
### activemq.log for Broker-1
```
2025-09-21 10:41:53,783 | INFO | Async start of
DiscoveryNetworkConnector:nc1:BrokerService[broker-1] |
org.apache.activemq.broker.BrokerService | NetworkConnector Start Thread-3
2025-09-21 10:42:23,921 | INFO | Error with pending remote brokerInfo on:
ssl://null:0 (Channel was inactive (no connection attempt made) for too
(>30000) long: null) |
org.apache.activemq.network.DemandForwardingBridgeSupport | ActiveMQ
InactivityMonitor Worker 11
2025-09-21 10:42:23,998 | WARN | Could not start network bridge between:
vm://broker-1 and: ssl://<broker-2-uri> due to: connect timed out |
org.apache.activemq.network.DiscoveryNetworkConnector | NetworkConnector
Start Thread-0
2025-09-21 10:42:24,011 | INFO | broker-1 Shutting down nc1 |
org.apache.activemq.network.DemandForwardingBridgeSupport | ActiveMQ
BrokerService[broker-1] Task-44
```
### activemq.log for Broker-2
```
2025-09-21 10:42:23,757 | WARN | Async error occurred |
org.apache.activemq.broker.TransportConnection.Service | ActiveMQ NIO
Worker 16677
2025-09-21 10:42:25,809 | INFO | Started responder end of duplex bridge
nc1@<broker-1-uri> | org.apache.activemq.broker.TransportConnection |
ActiveMQ NIO Worker 16684
```
My questions:
1. If that is the case, then the consumer on broker 1 will not be able to
consume message from a queue in broker 2? Especially, that queue is a
Consumer queue of a virtual topic.
2. However, with the responder end started, consumer on broker 2 will be
able to consume message from a queue in broker 1?
2. Why would networkBridge from broker-2 -> broker-1 was able to start but
broker-1 -> broker-2 was shutdown almost immediately?
Thank you so much!!
Thanks,
Ken
Here are the configurations for both
Broker-1
```xml
<broker
advisorySupport="true"
deleteAllMessagesOnStartup="true"
schedulePeriodForDestinationPurge="10000"
schedulerSupport="true"
networkConnectorStartAsync="true"
restartAllowed="false"
xmlns="http://activemq.apache.org/schema/core">
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry advisoryForConsumed="true" advisoryForDelivery="true"
gcInactiveDestinations="true" inactiveTimoutBeforeGC="604800000"
includeBodyForAdvisory="true" memoryLimit="512MB" topic=">">
<pendingMessageLimitStrategy>
<constantPendingMessageLimitStrategy limit="1000"/>
</pendingMessageLimitStrategy>
</policyEntry>
<policyEntry advisoryForConsumed="true" advisoryForDelivery="true"
gcInactiveDestinations="true" inactiveTimoutBeforeGC="604800000"
includeBodyForAdvisory="true" memoryLimit="512MB" queue=">"
queuePrefetch="10" reduceMemoryFootprint="true">
<deadLetterStrategy>
<individualDeadLetterStrategy expiration="604800000"
processExpired="true" queuePrefix="DLQ." useQueueForQueueMessages="true"/>
</deadLetterStrategy>
<networkBridgeFilterFactory>
<conditionalNetworkBridgeFilterFactory
replayWhenNoConsumers="true"/>
</networkBridgeFilterFactory>
</policyEntry>
</policyEntries>
</policyMap>
</destinationPolicy>
<destinationInterceptors>
<virtualDestinationInterceptor>
<virtualDestinations>
<virtualTopic name="VirtualTopic.>" prefix="Consumer.*."/>
<virtualTopic name="VirtualTopicSB.>" prefix="ConsumerSB.*."
selectorAware="true"/>
</virtualDestinations>
</virtualDestinationInterceptor>
</destinationInterceptors>
<plugins>
<authorizationPlugin>
<map>
<cachedLDAPAuthorizationMap legacyGroupMapping="false"
refreshInterval="1200000"/>
</map>
<map>
<authorizationMap>
<!-- Some authorization configuration for each queue -->
</authorizationMap>
</map>
</authorizationPlugin>
<timeStampingBrokerPlugin ttlCeiling="14400000"
zeroExpirationOverride="14400000"/>
<statisticsBrokerPlugin/>
</plugins>
<networkConnectors>
<networkConnector conduitSubscriptions="true"
decreaseNetworkConsumerPriority="true" duplex="true" name="nc1"
prefetchSize="10" uri="static:(ssl://<uri to broker-2>)" userName="qadmin">
<excludedDestinations>
<queue physicalName=">"/>
<topic physicalName="VirtualTopic.>"/>
<topic physicalName="VirtualTopicSB.>"/>
</excludedDestinations>
</networkConnector>
<networkConnector conduitSubscriptions="false"
decreaseNetworkConsumerPriority="true" duplex="true" name="nc2"
prefetchSize="10" uri="static:(ssl://<uri to broker-2>)" userName="qadmin">
<excludedDestinations>
<topic physicalName=">"/>
</excludedDestinations>
</networkConnector>
<networkConnector conduitSubscriptions="false"
decreaseNetworkConsumerPriority="false" duplex="true" name="nc3"
prefetchSize="10" uri="static:(ssl://<uri to broker-2>)" userName="qadmin">
<dynamicallyIncludedDestinations>
<queue physicalName=">.DEV"/>
<queue physicalName=">.Dev"/>
<queue physicalName=">.dev"/>
</dynamicallyIncludedDestinations>
<excludedDestinations>
<topic physicalName=">"/>
</excludedDestinations>
</networkConnector>
<!-- a few other networkConnector that setup duplex bridge to broker-2
that mimic the pattern above but for different sets of queues -->
</networkConnectors>
</broker>
```
Broker 2
```xml
<broker
advisorySupport="true"
deleteAllMessagesOnStartup="true"
schedulePeriodForDestinationPurge="10000"
schedulerSupport="true"
networkConnectorStartAsync="true"
restartAllowed="false"
xmlns="http://activemq.apache.org/schema/core">
<!-- same destinationPolicy, plugins and destinationInterceptors
configuration-->
<!-- no network connectors because broker 1 is duplex-->
</broker>
```