network of brokers distributes messages to brokers with 0 consumers with
dynamicOnly=true set
---------------------------------------------------------------------------------------------
Key: AMQ-2135
URL: https://issues.apache.org/activemq/browse/AMQ-2135
Project: ActiveMQ
Issue Type: Bug
Components: Broker
Affects Versions: 5.2.0
Environment: linux (centos 4.6) using ActiveMQ 5.2.0 binary
distribution
Reporter: Don Hoffman
using only the example code, the 5.2.0 release can be made to distribute
messages to brokers with no consumers, which remain at those brokers and are
never consumed, unless a consumer later connects specifically to those brokers.
this bug is not reproducible in 5.1.0.
to reproduce:
run 3 brokers. connect a consumer to brokers 1 and 2. connect a producer to
broker 1. not all messages produced will be received by the 2 consumers. note
that the specific brokers connected to matters for the 3-broker case. for
example, on my machine, if the producer connects to broker 2 instead of broker
1, all messages are received. you may need to try various combinations of
consumer/producer connections to reproduce the problem, but this specific setup
breaks reliably for me.
this problem becomes more pronounced and easier to reproduce as the number of
brokers increases.
specific configuration used to reproduce:
3 broker config xml files:
testamq1.xml
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:amq="http://activemq.apache.org/schema/core"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://activemq.apache.org/schema/core
http://activemq.apache.org/schema/core/activemq-core.xsd
http://activemq.apache.org/camel/schema/spring
http://activemq.apache.org/camel/schema/spring/camel-spring.xsd">
<broker brokerName="b1" xmlns="http://activemq.apache.org/schema/core"
useJmx="false" advisorySupport="true">
<persistenceAdapter>
<amqPersistenceAdapter directory="activemq-data1" maxFileLength="32mb"/>
</persistenceAdapter>
<transportConnectors>
<transportConnector uri="tcp://localhost:61616"/>
</transportConnectors>
<networkConnectors>
<networkConnector
uri="static://(tcp://localhost:61617,tcp://localhost:61618)" dynamicOnly="true"
networkTTL="5"/>
</networkConnectors>
</broker>
</beans>
testamq2.xml
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:amq="http://activemq.apache.org/schema/core"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://activemq.apache.org/schema/core
http://activemq.apache.org/schema/core/activemq-core.xsd
http://activemq.apache.org/camel/schema/spring
http://activemq.apache.org/camel/schema/spring/camel-spring.xsd">
<broker brokerName="b2" xmlns="http://activemq.apache.org/schema/core"
useJmx="false" advisorySupport="true">
<persistenceAdapter>
<amqPersistenceAdapter directory="activemq-data2" maxFileLength="32mb"/>
</persistenceAdapter>
<transportConnectors>
<transportConnector uri="tcp://localhost:61617"/>
</transportConnectors>
<networkConnectors>
<networkConnector
uri="static://(tcp://localhost:61616,tcp://localhost:61618)" dynamicOnly="true"
networkTTL="5"/>
</networkConnectors>
</broker>
</beans>
testamq3.xml
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:amq="http://activemq.apache.org/schema/core"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://activemq.apache.org/schema/core
http://activemq.apache.org/schema/core/activemq-core.xsd
http://activemq.apache.org/camel/schema/spring
http://activemq.apache.org/camel/schema/spring/camel-spring.xsd">
<broker brokerName="b3" xmlns="http://activemq.apache.org/schema/core"
useJmx="false" advisorySupport="true">
<persistenceAdapter>
<amqPersistenceAdapter directory="activemq-data3" maxFileLength="32mb"/>
</persistenceAdapter>
<transportConnectors>
<transportConnector uri="tcp://localhost:61618"/>
</transportConnectors>
<networkConnectors>
<networkConnector
uri="static://(tcp://localhost:61616,tcp://localhost:61617)" dynamicOnly="true"
networkTTL="5"/>
</networkConnectors>
</broker>
</beans>
run 3 brokers:
bin/activemq xbean:testamq1.xml
bin/activemq xbean:testamq2.xml
bin/activemq xbean:testamq3.xml
run 2 consumers (from examples directory):
ant consumer -Durl="failover:(tcp://localhost:61616)" -Dsubject="test.queue"
-Dmax=100 -DsleepTime=3
ant consumer -Durl="failover:(tcp://localhost:61617)" -Dsubject="test.queue"
-Dmax=100 -DsleepTime=3
run 1 producer (from examples directory) with 10 messages:
ant producer -Durl="failover:(tcp://localhost:61616)" -Dsubject="test.queue"
-Dmax=10
consumers will not receive all messages.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.