Hi Ken,

I think that the problem is that the vm endpoint is the same as you
are creating two full duplex. I guess it works if you don't use duplex
right ?

I will try to reproduce.

Regards
JB

On Thu, Oct 2, 2025 at 11:10 PM Ken Liao <[email protected]> wrote:
>
> 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>
> ```

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information, visit: https://activemq.apache.org/contact


Reply via email to