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="&gt;">
          <pendingMessageLimitStrategy>
            <constantPendingMessageLimitStrategy limit="1000"/>
          </pendingMessageLimitStrategy>
        </policyEntry>
        <policyEntry advisoryForConsumed="true" advisoryForDelivery="true"
gcInactiveDestinations="true" inactiveTimoutBeforeGC="604800000"
includeBodyForAdvisory="true" memoryLimit="512MB" queue="&gt;"
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.&gt;" prefix="Consumer.*."/>
        <virtualTopic name="VirtualTopicSB.&gt;" 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="&gt;"/>
        <topic physicalName="VirtualTopic.&gt;"/>
        <topic physicalName="VirtualTopicSB.&gt;"/>
      </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="&gt;"/>
      </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="&gt;.DEV"/>
        <queue physicalName="&gt;.Dev"/>
        <queue physicalName="&gt;.dev"/>
      </dynamicallyIncludedDestinations>
      <excludedDestinations>
        <topic physicalName="&gt;"/>
      </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>
```

Reply via email to