<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<id>tag:old.nabble.com,2006:forum-2355</id>
	<title>Nabble - ActiveMQ - Dev</title>
	<updated>2009-11-23T18:24:46Z</updated>
	<link rel="self" type="application/atom+xml" href="http://old.nabble.com/ActiveMQ---Dev-f2355.xml" />
	<link rel="alternate" type="text/html" href="http://old.nabble.com/ActiveMQ---Dev-f2355.html" />
	<subtitle type="html">&lt;a href=&quot;http://activemq.apache.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Apache ActiveMQ&lt;/a&gt;&amp;nbsp;is the most popular and powerful open source Message Broker. Apache ActiveMQ is fast, supports many &lt;a href=&quot;http://activemq.apache.org/cross-language-clients.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Cross Language Clients and Protocols&lt;/a&gt;&amp;nbsp;and many &lt;a href=&quot;http://activemq.apache.org/features.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;advanced features&lt;a target=&quot;_top&quot;&gt;&amp;nbsp;while fully supporting JMS 1.1 and J2EE 1.4. Apache ActiveMQ is released under the Apache 2.0 License</subtitle>
	
<entry>
	<id>tag:old.nabble.com,2006:post-26489588</id>
	<title>Hudson build is still unstable: ActiveMQ #195</title>
	<published>2009-11-23T18:24:46Z</published>
	<updated>2009-11-23T18:24:46Z</updated>
	<author>
		<name>Apache Hudson Server</name>
	</author>
	<content type="html">See &amp;lt;&lt;a href=&quot;http://hudson.zones.apache.org/hudson/job/ActiveMQ/195/changes&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hudson.zones.apache.org/hudson/job/ActiveMQ/195/changes&lt;/a&gt;&amp;gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Hudson-build-became-unstable%3A-ActiveMQ--193-tp26437537p26489588.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26489586</id>
	<title>Hudson build is still unstable: ActiveMQ » ActiveMQ :: Core #195</title>
	<published>2009-11-23T18:24:38Z</published>
	<updated>2009-11-23T18:24:38Z</updated>
	<author>
		<name>Apache Hudson Server</name>
	</author>
	<content type="html">See &amp;lt;&lt;a href=&quot;http://hudson.zones.apache.org/hudson/job/ActiveMQ/org.apache.activemq$activemq-core/195/changes&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hudson.zones.apache.org/hudson/job/ActiveMQ/org.apache.activemq$activemq-core/195/changes&lt;/a&gt;&amp;gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Hudson-build-became-unstable%3A-ActiveMQ-%C2%BB-ActiveMQ-%3A%3A-Core--193-tp26437534p26489586.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26485573</id>
	<title>[jira] Resolved: (AMQCPP-250) Implement an Inactivity Monotir Transport filter for use on Transport that are used by the Failover Transport</title>
	<published>2009-11-23T12:49:58Z</published>
	<updated>2009-11-23T12:49:58Z</updated>
	<author>
		<name>JIRA jira@apache.org</name>
	</author>
	<content type="html">&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;[ &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQCPP-250?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQCPP-250?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel&lt;/a&gt;&amp;nbsp;]
&lt;br&gt;&lt;br&gt;Timothy Bish resolved AMQCPP-250.
&lt;br&gt;---------------------------------
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; Resolution: Fixed
&lt;br&gt;&lt;br&gt;Resolved in SVN Rev. 883495
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Implement an Inactivity Monotir Transport filter for use on Transport that are used by the Failover Transport
&lt;br&gt;&amp;gt; -------------------------------------------------------------------------------------------------------------
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Key: AMQCPP-250
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; URL: &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQCPP-250&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQCPP-250&lt;/a&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Project: ActiveMQ C++ Client
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Issue Type: Improvement
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Components: Decaf, Transports
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;Affects Versions: 3.0
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Reporter: Timothy Bish
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Assignee: Timothy Bish
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Fix For: 3.1
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; Original Estimate: 4 weeks
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Time Spent: 1 day
&lt;br&gt;&amp;gt; &amp;nbsp;Remaining Estimate: 3 weeks, 5 days
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Now that the Failover Transport is in place we need an Inactivity Monitor to wrap around transports such as TCP to detect long periods of inactivity and failures due to TCP connections that are otherwise not detected as broken such as a plug pull or switch failure. &amp;nbsp;
&lt;/div&gt;&lt;br&gt;-- 
&lt;br&gt;This message is automatically generated by JIRA.
&lt;br&gt;-
&lt;br&gt;You can reply to this email to add a comment to the issue online.
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-jira--Created%3A-%28AMQCPP-250%29-Implement-an-Inactivity-Monotir-Transport-filter-for-use-on-Transport-that-are-used-by-the-Failover-Transport-tp24148573p26485573.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26484992</id>
	<title>[jira] Updated: (AMQ-2507) When using a producer/session with a send timeout, send() doesn't throw an exception if the timeout is reached.</title>
	<published>2009-11-23T12:09:52Z</published>
	<updated>2009-11-23T12:09:52Z</updated>
	<author>
		<name>JIRA jira@apache.org</name>
	</author>
	<content type="html">&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;[ &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQ-2507?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQ-2507?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel&lt;/a&gt;&amp;nbsp;]
&lt;br&gt;&lt;br&gt;Dave Stanley updated AMQ-2507:
&lt;br&gt;------------------------------
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; Attachment: producer_timeout_test.txt
&lt;br&gt;&lt;br&gt;Attaching patch with testcase that shows the problem. Cut from trunk.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; When using a producer/session with a send timeout, send() doesn't throw an exception if the timeout is reached.
&lt;br&gt;&amp;gt; ---------------------------------------------------------------------------------------------------------------
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Key: AMQ-2507
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; URL: &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQ-2507&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQ-2507&lt;/a&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Project: ActiveMQ
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Issue Type: Improvement
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Components: Broker
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;Affects Versions: 5.3.0
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Environment: All platforms, 5.3.x
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Reporter: Dave Stanley
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Attachments: producer_timeout_test.txt
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; In the attached testcase we set a low broker memory limit (to force a producer to block due to the memory usage limit being hit), and also set a sendtimeout on the connection to force the producer.send() to return if it cannot send a message within the timeout period.
&lt;br&gt;&amp;gt; On running the test the broker sends messages until the timeout kicks in. Once the hits the memory limit it blocks and the producer.send() returns after the timeout.
&lt;br&gt;&amp;gt; The problem is there is no way to know that the send() failed. This improvement is to modify the session to throw an exception of some kind when the sendTimeout is reached.
&lt;br&gt;&amp;gt; I have attached the testcase without a fix as its not clear the best approach to fix.
&lt;br&gt;&amp;gt; One possible solution is to modify ActiveMQSession, but need some clarification on whats the best JMSException to throw. &amp;nbsp;It doesn't look like this is explicitly spelled out in the JMS Spec.
&lt;br&gt;&amp;gt; General area is the send() method
&lt;br&gt;&amp;gt; protected void send(ActiveMQMessageProducer producer, ActiveMQDestination destination, Message message, int deliveryMode, int priority, long timeToLive,
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; MemoryUsage producerWindow, int sendTimeout) throws JMSException {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.....
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (sendTimeout &amp;lt;= 0 &amp;&amp; !msg.isResponseRequired() &amp;&amp; !connection.isAlwaysSyncSend() &amp;&amp; (!msg.isPersistent() || connection.isUseAsyncSend() || txid != null)) {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.connection.asyncSendPacket(msg);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (producerWindow != null) {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Since we defer lots of the marshaling till we hit the
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // wire, this might not
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // provide and accurate size. We may change over to doing
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // more aggressive marshaling,
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // to get more accurate sizes.. this is more important once
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // users start using producer window
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // flow control.
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int size = msg.getSize();
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; producerWindow.increaseUsage(size);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } else {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Handle send timeout here
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (sendTimeout &amp;gt; 0) {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 	Object response = this.connection.syncSendPacket(msg,sendTimeout);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(response == null) {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 	LOG.debug(getSessionId() + &amp;quot; timeout sending message: &amp;quot; + msg);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // What jms exception is most appropriate to throw here?
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }else {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.connection.syncSendPacket(msg);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; }
&lt;/div&gt;&lt;br&gt;-- 
&lt;br&gt;This message is automatically generated by JIRA.
&lt;br&gt;-
&lt;br&gt;You can reply to this email to add a comment to the issue online.
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-jira--Created%3A-%28AMQ-2507%29-When-using-a-producer-session-with-a-send-timeout%2C-send%28%29-doesn%27t-throw-an-exception-if-the-timeout-is-reached.-tp26484958p26484992.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26484958</id>
	<title>[jira] Created: (AMQ-2507) When using a producer/session with a send timeout, send() doesn't throw an exception if the timeout is reached.</title>
	<published>2009-11-23T12:07:52Z</published>
	<updated>2009-11-23T12:07:52Z</updated>
	<author>
		<name>JIRA jira@apache.org</name>
	</author>
	<content type="html">When using a producer/session with a send timeout, send() doesn't throw an exception if the timeout is reached.
&lt;br&gt;---------------------------------------------------------------------------------------------------------------
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Key: AMQ-2507
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;URL: &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQ-2507&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQ-2507&lt;/a&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Project: ActiveMQ
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Issue Type: Improvement
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Components: Broker
&lt;br&gt;&amp;nbsp; &amp;nbsp; Affects Versions: 5.3.0
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Environment: All platforms, 5.3.x
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Reporter: Dave Stanley
&lt;br&gt;&lt;br&gt;&lt;br&gt;In the attached testcase we set a low broker memory limit (to force a producer to block due to the memory usage limit being hit), and also set a sendtimeout on the connection to force the producer.send() to return if it cannot send a message within the timeout period.
&lt;br&gt;&lt;br&gt;On running the test the broker sends messages until the timeout kicks in. Once the hits the memory limit it blocks and the producer.send() returns after the timeout.
&lt;br&gt;&lt;br&gt;The problem is there is no way to know that the send() failed. This improvement is to modify the session to throw an exception of some kind when the sendTimeout is reached.
&lt;br&gt;&lt;br&gt;I have attached the testcase without a fix as its not clear the best approach to fix.
&lt;br&gt;&lt;br&gt;One possible solution is to modify ActiveMQSession, but need some clarification on whats the best JMSException to throw. &amp;nbsp;It doesn't look like this is explicitly spelled out in the JMS Spec.
&lt;br&gt;&lt;br&gt;General area is the send() method
&lt;br&gt;&lt;br&gt;protected void send(ActiveMQMessageProducer producer, ActiveMQDestination destination, Message message, int deliveryMode, int priority, long timeToLive,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; MemoryUsage producerWindow, int sendTimeout) throws JMSException {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.....
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (sendTimeout &amp;lt;= 0 &amp;&amp; !msg.isResponseRequired() &amp;&amp; !connection.isAlwaysSyncSend() &amp;&amp; (!msg.isPersistent() || connection.isUseAsyncSend() || txid != null)) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.connection.asyncSendPacket(msg);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (producerWindow != null) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Since we defer lots of the marshaling till we hit the
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // wire, this might not
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // provide and accurate size. We may change over to doing
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // more aggressive marshaling,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // to get more accurate sizes.. this is more important once
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // users start using producer window
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // flow control.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int size = msg.getSize();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; producerWindow.increaseUsage(size);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } else {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Handle send timeout here
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (sendTimeout &amp;gt; 0) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 	Object response = this.connection.syncSendPacket(msg,sendTimeout);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(response == null) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 	LOG.debug(getSessionId() + &amp;quot; timeout sending message: &amp;quot; + msg);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // What jms exception is most appropriate to throw here?
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }else {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.connection.syncSendPacket(msg);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;This message is automatically generated by JIRA.
&lt;br&gt;-
&lt;br&gt;You can reply to this email to add a comment to the issue online.
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-jira--Created%3A-%28AMQ-2507%29-When-using-a-producer-session-with-a-send-timeout%2C-send%28%29-doesn%27t-throw-an-exception-if-the-timeout-is-reached.-tp26484958p26484958.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26484464</id>
	<title>[jira] Resolved: (AMQCPP-270) Broker exception on message Ack,</title>
	<published>2009-11-23T11:35:52Z</published>
	<updated>2009-11-23T11:35:52Z</updated>
	<author>
		<name>JIRA jira@apache.org</name>
	</author>
	<content type="html">&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;[ &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQCPP-270?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQCPP-270?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel&lt;/a&gt;&amp;nbsp;]
&lt;br&gt;&lt;br&gt;Timothy Bish resolved AMQCPP-270.
&lt;br&gt;---------------------------------
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; Resolution: Fixed
&lt;br&gt;&lt;br&gt;Fixed in trunk.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Broker exception on message Ack, 
&lt;br&gt;&amp;gt; ---------------------------------
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Key: AMQCPP-270
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; URL: &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQCPP-270&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQCPP-270&lt;/a&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Project: ActiveMQ C++ Client
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Issue Type: Bug
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;Affects Versions: 3.0.1
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Reporter: Timothy Bish
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Assignee: Timothy Bish
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Fix For: 3.1
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Certain cases that involved acknowledging a message from the async callback of a MessageListener when in Client or Individual Ack modes can result in this error from the broker: &amp;quot;Could not correlate acknowledgment with dispatched message&amp;quot;
&lt;br&gt;&amp;gt; This is the same situation as documented in AMQ-2489
&lt;/div&gt;&lt;br&gt;-- 
&lt;br&gt;This message is automatically generated by JIRA.
&lt;br&gt;-
&lt;br&gt;You can reply to this email to add a comment to the issue online.
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-jira--Created%3A-%28AMQCPP-270%29-Broker-exception-on-message-Ack%2C-tp26484432p26484464.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26484432</id>
	<title>[jira] Created: (AMQCPP-270) Broker exception on message Ack,</title>
	<published>2009-11-23T11:33:52Z</published>
	<updated>2009-11-23T11:33:52Z</updated>
	<author>
		<name>JIRA jira@apache.org</name>
	</author>
	<content type="html">Broker exception on message Ack, 
&lt;br&gt;---------------------------------
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Key: AMQCPP-270
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;URL: &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQCPP-270&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQCPP-270&lt;/a&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Project: ActiveMQ C++ Client
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Issue Type: Bug
&lt;br&gt;&amp;nbsp; &amp;nbsp; Affects Versions: 3.0.1
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Reporter: Timothy Bish
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Assignee: Timothy Bish
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Fix For: 3.1
&lt;br&gt;&lt;br&gt;&lt;br&gt;Certain cases that involved acknowledging a message from the async callback of a MessageListener when in Client or Individual Ack modes can result in this error from the broker: &amp;quot;Could not correlate acknowledgment with dispatched message&amp;quot;
&lt;br&gt;&lt;br&gt;This is the same situation as documented in AMQ-2489
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;This message is automatically generated by JIRA.
&lt;br&gt;-
&lt;br&gt;You can reply to this email to add a comment to the issue online.
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-jira--Created%3A-%28AMQCPP-270%29-Broker-exception-on-message-Ack%2C-tp26484432p26484432.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26484084</id>
	<title>Re: svn commit: r883411 - /activemq/trunk/activemq-core/src/test/java/org/apache/activemq/network/BrokerNetworkWithStuckMessagesTest.java</title>
	<published>2009-11-23T11:08:02Z</published>
	<updated>2009-11-23T11:08:02Z</updated>
	<author>
		<name>bsnyder</name>
	</author>
	<content type="html">On Mon, Nov 23, 2009 at 11:49 AM, Gary Tully &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26484084&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gary.tully@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt; committed a fix for the protected access compile error, but the test fails
&lt;br&gt;&amp;gt; for me.
&lt;br&gt;&lt;br&gt;Whoops, sorry about that. I forgot to ask about the change to the
&lt;br&gt;modifier on the ManagementContext.getMBeanServer() method. Thanks for
&lt;br&gt;changing the use of that.
&lt;br&gt;&lt;br&gt;Could you provide the failure stack trace please?
&lt;br&gt;&lt;br&gt;Bruce
&lt;br&gt;-- 
&lt;br&gt;perl -e 'print unpack(&amp;quot;u30&amp;quot;,&amp;quot;D0G)U8V4\@4VYY9&amp;5R\&amp;quot;F)R=6-E+G-N&amp;gt;61E&amp;lt;D\!G;6%I;\&amp;quot;YC;VT*&amp;quot;
&lt;br&gt;);'
&lt;br&gt;&lt;br&gt;ActiveMQ in Action: &lt;a href=&quot;http://bit.ly/2je6cQ&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bit.ly/2je6cQ&lt;/a&gt;&lt;br&gt;Blog: &lt;a href=&quot;http://bruceblog.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bruceblog.org/&lt;/a&gt;&lt;br&gt;Twitter: &lt;a href=&quot;http://twitter.com/brucesnyder&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://twitter.com/brucesnyder&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A-svn-commit%3A-r883411----activemq-trunk-activemq-core-src-test-java-org-apache-activemq-network-BrokerNetworkWithStuckMessagesTest.java-tp26483359p26484084.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26484079</id>
	<title>[jira] Commented: (AMQ-2506) Incorrect activemq-policy.xml in activemq-core tests used and referenced in http://activemq.apache.org/dispatch-policies.html.</title>
	<published>2009-11-23T11:07:52Z</published>
	<updated>2009-11-23T11:07:52Z</updated>
	<author>
		<name>JIRA jira@apache.org</name>
	</author>
	<content type="html">&lt;br&gt;&amp;nbsp; &amp;nbsp; [ &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQ-2506?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&amp;focusedCommentId=56028#action_56028&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQ-2506?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&amp;focusedCommentId=56028#action_56028&lt;/a&gt;&amp;nbsp;] 
&lt;br&gt;&lt;br&gt;Gary Tully commented on AMQ-2506:
&lt;br&gt;---------------------------------
&lt;br&gt;&lt;br&gt;Is this really wrong? Check out the test case that validates the config setting. org.apache.activemq.xbean.XBeanConfigTest
&lt;br&gt;It fails with the patch. There may be cases where topic dispatch order is important. Advisories in a network scenario for example can be more deterministic. &amp;nbsp;Am not sure if this is really a bug in the doc.
&lt;br&gt;If it really is then the corresponding test needs to change but it looks ok to me.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Incorrect activemq-policy.xml in activemq-core tests used and referenced in &lt;a href=&quot;http://activemq.apache.org/dispatch-policies.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://activemq.apache.org/dispatch-policies.html&lt;/a&gt;.
&lt;br&gt;&amp;gt; ------------------------------------------------------------------------------------------------------------------------------
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Key: AMQ-2506
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; URL: &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQ-2506&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQ-2506&lt;/a&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Project: ActiveMQ
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Issue Type: Bug
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Components: Documentation, Test Cases
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;Affects Versions: 5.3.0
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Reporter: Torsten Mielke
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Priority: Minor
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Attachments: AMQ-2506.patch
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; Original Estimate: 20 minutes
&lt;br&gt;&amp;gt; &amp;nbsp;Remaining Estimate: 20 minutes
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://activemq.apache.org/dispatch-policies.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://activemq.apache.org/dispatch-policies.html&lt;/a&gt;&amp;nbsp;explains the use of dispatch policies and gives an example which is a code snippet taken from activemq/trunk/activemq-core/src/test/resources/org/apache/activemq/xbean/activemq-policy.xml.
&lt;br&gt;&amp;gt; That example is incorrect as it configures a round robin dispatch policy for topics but such policy only really makes sense for queues. 
&lt;/div&gt;&lt;br&gt;-- 
&lt;br&gt;This message is automatically generated by JIRA.
&lt;br&gt;-
&lt;br&gt;You can reply to this email to add a comment to the issue online.
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-jira--Created%3A-%28AMQ-2506%29-Incorrect-activemq-policy.xml-in-activemq-core-tests-used-and-referenced-in-http%3A--activemq.apache.org-dispatch-policies.html.-tp26478978p26484079.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26483800</id>
	<title>Re: svn commit: r883411 - /activemq/trunk/activemq-core/src/test/java/org/apache/activemq/network/BrokerNetworkWithStuckMessagesTest.java</title>
	<published>2009-11-23T10:49:53Z</published>
	<updated>2009-11-23T10:49:53Z</updated>
	<author>
		<name>Gary Tully</name>
	</author>
	<content type="html">committed a fix for the protected access compile error, but the test fails
&lt;br&gt;for me.
&lt;br&gt;&lt;br&gt;2009/11/23 Gary Tully &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26483800&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gary.tully@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; this breaks the build, getMBeanServer() is intentionally protected in
&lt;br&gt;&amp;gt; ManagementContext.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; activemq_t/activemq-core/src/test/java/org/apache/activemq/network/BrokerNetworkWithStuckMessagesTest.java:[364,33]
&lt;br&gt;&amp;gt; getMBeanServer() has protected access in
&lt;br&gt;&amp;gt; org.apache.activemq.broker.jmx.ManagementContext
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; 2009/11/23 &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26483800&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;bsnyder@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Author: bsnyder
&lt;br&gt;&amp;gt;&amp;gt; Date: Mon Nov 23 17:02:39 2009
&lt;br&gt;&amp;gt;&amp;gt; New Revision: 883411
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=883411&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=883411&amp;view=rev&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt; Log:
&lt;br&gt;&amp;gt;&amp;gt; Updated test for AMQ-2324 and AMQ-2484
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Modified:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;activemq/trunk/activemq-core/src/test/java/org/apache/activemq/network/BrokerNetworkWithStuckMessagesTest.java
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Modified:
&lt;br&gt;&amp;gt;&amp;gt; activemq/trunk/activemq-core/src/test/java/org/apache/activemq/network/BrokerNetworkWithStuckMessagesTest.java
&lt;br&gt;&amp;gt;&amp;gt; URL:
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/network/BrokerNetworkWithStuckMessagesTest.java?rev=883411&amp;r1=883410&amp;r2=883411&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/network/BrokerNetworkWithStuckMessagesTest.java?rev=883411&amp;r1=883410&amp;r2=883411&amp;view=diff&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; ==============================================================================
&lt;br&gt;&amp;gt;&amp;gt; ---
&lt;br&gt;&amp;gt;&amp;gt; activemq/trunk/activemq-core/src/test/java/org/apache/activemq/network/BrokerNetworkWithStuckMessagesTest.java
&lt;br&gt;&amp;gt;&amp;gt; (original)
&lt;br&gt;&amp;gt;&amp;gt; +++
&lt;br&gt;&amp;gt;&amp;gt; activemq/trunk/activemq-core/src/test/java/org/apache/activemq/network/BrokerNetworkWithStuckMessagesTest.java
&lt;br&gt;&amp;gt;&amp;gt; Mon Nov 23 17:02:39 2009
&lt;br&gt;&amp;gt;&amp;gt; @@ -2,35 +2,102 @@
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;import java.io.File;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;import java.io.IOException;
&lt;br&gt;&amp;gt;&amp;gt; +import java.net.URI;
&lt;br&gt;&amp;gt;&amp;gt; +import java.net.URISyntaxException;
&lt;br&gt;&amp;gt;&amp;gt; +import java.util.ArrayList;
&lt;br&gt;&amp;gt;&amp;gt; +import java.util.Enumeration;
&lt;br&gt;&amp;gt;&amp;gt; +import java.util.HashMap;
&lt;br&gt;&amp;gt;&amp;gt; +import java.util.Hashtable;
&lt;br&gt;&amp;gt;&amp;gt; +import java.util.List;
&lt;br&gt;&amp;gt;&amp;gt; +import java.util.Map;
&lt;br&gt;&amp;gt;&amp;gt; +import java.util.concurrent.TimeUnit;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; +import javax.jms.Connection;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;import javax.jms.DeliveryMode;
&lt;br&gt;&amp;gt;&amp;gt; -
&lt;br&gt;&amp;gt;&amp;gt; -import junit.framework.Test;
&lt;br&gt;&amp;gt;&amp;gt; -
&lt;br&gt;&amp;gt;&amp;gt; +import javax.jms.MessageNotWriteableException;
&lt;br&gt;&amp;gt;&amp;gt; +import javax.jms.Queue;
&lt;br&gt;&amp;gt;&amp;gt; +import javax.jms.QueueBrowser;
&lt;br&gt;&amp;gt;&amp;gt; +import javax.jms.Session;
&lt;br&gt;&amp;gt;&amp;gt; +import javax.management.MBeanServer;
&lt;br&gt;&amp;gt;&amp;gt; +import javax.management.ObjectName;
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; +import junit.framework.TestCase;
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; +import org.apache.activemq.ActiveMQConnectionFactory;
&lt;br&gt;&amp;gt;&amp;gt; +import org.apache.activemq.broker.BrokerService;
&lt;br&gt;&amp;gt;&amp;gt; +import org.apache.activemq.broker.BrokerTestSupport;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;import org.apache.activemq.broker.StubConnection;
&lt;br&gt;&amp;gt;&amp;gt; +import org.apache.activemq.broker.TransportConnector;
&lt;br&gt;&amp;gt;&amp;gt; +import org.apache.activemq.broker.jmx.ManagementContext;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;import org.apache.activemq.command.ActiveMQDestination;
&lt;br&gt;&amp;gt;&amp;gt; -import org.apache.activemq.command.Command;
&lt;br&gt;&amp;gt;&amp;gt; +import org.apache.activemq.command.ActiveMQTextMessage;
&lt;br&gt;&amp;gt;&amp;gt; +import org.apache.activemq.command.ConnectionId;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;import org.apache.activemq.command.ConnectionInfo;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;import org.apache.activemq.command.ConsumerInfo;
&lt;br&gt;&amp;gt;&amp;gt; +import org.apache.activemq.command.DestinationInfo;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;import org.apache.activemq.command.Message;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;import org.apache.activemq.command.MessageAck;
&lt;br&gt;&amp;gt;&amp;gt; +import org.apache.activemq.command.MessageDispatch;
&lt;br&gt;&amp;gt;&amp;gt; +import org.apache.activemq.command.MessageId;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;import org.apache.activemq.command.ProducerInfo;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;import org.apache.activemq.command.SessionInfo;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;import org.apache.activemq.transport.Transport;
&lt;br&gt;&amp;gt;&amp;gt; -import org.apache.activemq.transport.TransportListener;
&lt;br&gt;&amp;gt;&amp;gt; +import org.apache.activemq.transport.TransportFactory;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;import org.apache.activemq.util.Wait;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;import org.apache.commons.io.FileUtils;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;import org.apache.commons.logging.Log;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;import org.apache.commons.logging.LogFactory;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; -public class BrokerNetworkWithStuckMessagesTest extends
&lt;br&gt;&amp;gt;&amp;gt; NetworkTestSupport {
&lt;br&gt;&amp;gt;&amp;gt; -
&lt;br&gt;&amp;gt;&amp;gt; +/**
&lt;br&gt;&amp;gt;&amp;gt; + * This class duplicates most of the functionality in {@link
&lt;br&gt;&amp;gt;&amp;gt; NetworkTestSupport}
&lt;br&gt;&amp;gt;&amp;gt; + * and {@link BrokerTestSupport} because more control was needed over how
&lt;br&gt;&amp;gt;&amp;gt; brokers
&lt;br&gt;&amp;gt;&amp;gt; + * and connectors are created. Also, this test asserts message counts via
&lt;br&gt;&amp;gt;&amp;gt; JMX on
&lt;br&gt;&amp;gt;&amp;gt; + * each broker.
&lt;br&gt;&amp;gt;&amp;gt; + *
&lt;br&gt;&amp;gt;&amp;gt; + * @author bsnyder
&lt;br&gt;&amp;gt;&amp;gt; + *
&lt;br&gt;&amp;gt;&amp;gt; + */
&lt;br&gt;&amp;gt;&amp;gt; +public class BrokerNetworkWithStuckMessagesTest extends TestCase
&lt;br&gt;&amp;gt;&amp;gt; /*NetworkTestSupport*/ {
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; private static final Log LOG =
&lt;br&gt;&amp;gt;&amp;gt; LogFactory.getLog(BrokerNetworkWithStuckMessagesTest.class);
&lt;br&gt;&amp;gt;&amp;gt; -
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; private DemandForwardingBridge bridge;
&lt;br&gt;&amp;gt;&amp;gt; -
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; protected void setUp() throws Exception {
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;super.setUp();
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;private BrokerService localBroker;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;private BrokerService remoteBroker;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;private DemandForwardingBridge bridge;
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected Map&amp;lt;String, BrokerService&amp;gt; brokers = new HashMap&amp;lt;String,
&lt;br&gt;&amp;gt;&amp;gt; BrokerService&amp;gt;();
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected ArrayList connections = new ArrayList();
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected TransportConnector connector;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected TransportConnector remoteConnector;
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected long idGenerator;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected int msgIdGenerator;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected int tempDestGenerator;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected int maxWait = 4000;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected String queueName = &amp;quot;TEST&amp;quot;;
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected String amqDomain = &amp;quot;org.apache.activemq&amp;quot;;
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected void setUp() throws Exception {
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// For those who want visual confirmation:
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; Uncomment the following to enable JMX support on a port
&lt;br&gt;&amp;gt;&amp;gt; number to use
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; Jconsole to view each broker. You will need to add some
&lt;br&gt;&amp;gt;&amp;gt; calls to
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; Thread.sleep() to be able to actually slow things down so
&lt;br&gt;&amp;gt;&amp;gt; that you
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; can manually see JMX attrs.
&lt;br&gt;&amp;gt;&amp;gt; +// &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;System.setProperty(&amp;quot;com.sun.management.jmxremote&amp;quot;, &amp;quot;&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt; +// &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;System.setProperty(&amp;quot;com.sun.management.jmxremote.port&amp;quot;,
&lt;br&gt;&amp;gt;&amp;gt; &amp;quot;1099&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt; +// &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;System.setProperty(&amp;quot;com.sun.management.jmxremote.authenticate&amp;quot;,
&lt;br&gt;&amp;gt;&amp;gt; &amp;quot;false&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt; +// &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;System.setProperty(&amp;quot;com.sun.management.jmxremote.ssl&amp;quot;,
&lt;br&gt;&amp;gt;&amp;gt; &amp;quot;false&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Create the local broker
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;createBroker();
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Create the remote broker
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;createRemoteBroker();
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Remove the activemq-data directory from the creation of the
&lt;br&gt;&amp;gt;&amp;gt; remote broker
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FileUtils.deleteDirectory(new File(&amp;quot;activemq-data&amp;quot;));
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Create a network bridge between the local and remote brokers so
&lt;br&gt;&amp;gt;&amp;gt; that
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // demand-based forwarding can take place
&lt;br&gt;&amp;gt;&amp;gt; @@ -39,79 +106,42 @@
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; config.setDispatchAsync(false);
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Transport localTransport = createTransport();
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;localTransport.setTransportListener(new TransportListener() {
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Command command = null;
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void onCommand(Object o) {
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.command = (Command) o;
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LOG.info(&amp;quot;Command from [&amp;quot; +
&lt;br&gt;&amp;gt;&amp;gt; command.getFrom() + &amp;quot;] to [&amp;quot; + command.getTo() + &amp;quot;]&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt; -
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void onException(IOException error) {
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LOG.info(&amp;quot;Command from [&amp;quot; +
&lt;br&gt;&amp;gt;&amp;gt; command.getFrom() + &amp;quot;] to [&amp;quot; + command.getTo() + &amp;quot;]&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LOG.info(&amp;quot;Exception: &amp;quot; + error);
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt; -
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void transportInterupted() {
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LOG.info(&amp;quot;Interruption on local
&lt;br&gt;&amp;gt;&amp;gt; transport&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt; -
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void transportResumed() {
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LOG.info(&amp;quot;Resumption on local transport&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;});
&lt;br&gt;&amp;gt;&amp;gt; -
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Transport remoteTransport = createRemoteTransport();
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;remoteTransport.setTransportListener(new TransportListener() {
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Command command = null;
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void onCommand(Object o) {
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.command = (Command) o;
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LOG.info(&amp;quot;Command from [&amp;quot; +
&lt;br&gt;&amp;gt;&amp;gt; command.getFrom() + &amp;quot;] to [&amp;quot; + command.getTo() + &amp;quot;]&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt; -
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void onException(IOException error) {
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LOG.info(&amp;quot;Command from [&amp;quot; +
&lt;br&gt;&amp;gt;&amp;gt; command.getFrom() + &amp;quot;] to [&amp;quot; + command.getTo() + &amp;quot;]&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LOG.info(&amp;quot;Exception: &amp;quot; + error);
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt; -
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void transportInterupted() {
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LOG.info(&amp;quot;Interruption on remote
&lt;br&gt;&amp;gt;&amp;gt; transport&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt; -
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void transportResumed() {
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LOG.info(&amp;quot;Resumption on remote
&lt;br&gt;&amp;gt;&amp;gt; transport&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;});
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Create a network bridge between the two brokers
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bridge = new DemandForwardingBridge(config, localTransport,
&lt;br&gt;&amp;gt;&amp;gt; remoteTransport);
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;bridge.setBrokerService(broker);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;bridge.setBrokerService(localBroker);
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bridge.start();
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Enable JMX support on the local and remote brokers
&lt;br&gt;&amp;gt;&amp;gt; -// &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;broker.setUseJmx(true);
&lt;br&gt;&amp;gt;&amp;gt; -// &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;remoteBroker.setUseJmx(true);
&lt;br&gt;&amp;gt;&amp;gt; -
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Make sure persistence is disabled
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;broker.setPersistent(false);
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;broker.setPersistenceAdapter(null);
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;remoteBroker.setPersistent(false);
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;remoteBroker.setPersistenceAdapter(null);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;waitForBridgeFormation();
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Remove the activemq-data directory from the creation of the
&lt;br&gt;&amp;gt;&amp;gt; remote broker
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FileUtils.deleteDirectory(new File(&amp;quot;activemq-data&amp;quot;));
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt; -
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; protected void tearDown() throws Exception {
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected void waitForBridgeFormation() throws Exception {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (final BrokerService broker : brokers.values()) {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!broker.getNetworkConnectors().isEmpty()) {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Max wait here is 30 secs
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Wait.waitFor(new Wait.Condition() {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public boolean isSatisified() throws Exception {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return
&lt;br&gt;&amp;gt;&amp;gt; !broker.getNetworkConnectors().get(0).activeBridges().isEmpty();
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}});
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected void tearDown() throws Exception {
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bridge.stop();
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;super.tearDown();
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;localBroker.stop();
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;remoteBroker.stop();
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; public void testBrokerNetworkWithStuckMessages() throws Exception
&lt;br&gt;&amp;gt;&amp;gt; {
&lt;br&gt;&amp;gt;&amp;gt; -
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int sendNumMessages = 10;
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int receiveNumMessages = 5;
&lt;br&gt;&amp;gt;&amp;gt; -
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Create a producer and send a batch of 10 messages to
&lt;br&gt;&amp;gt;&amp;gt; the local broker
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; StubConnection connection1 = createConnection();
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;public void testBrokerNetworkWithStuckMessages() throws Exception {
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int sendNumMessages = 10;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int receiveNumMessages = 5;
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Create a producer
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;StubConnection connection1 = createConnection();
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ConnectionInfo connectionInfo1 = createConnectionInfo();
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SessionInfo sessionInfo1 = createSessionInfo(connectionInfo1);
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ProducerInfo producerInfo = createProducerInfo(sessionInfo1);
&lt;br&gt;&amp;gt;&amp;gt; @@ -122,25 +152,25 @@
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Create a destination on the local broker
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ActiveMQDestination destinationInfo1 = null;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Send a 10 messages to the local broker
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (int i = 0; i &amp;lt; sendNumMessages; ++i) {
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; destinationInfo1 = createDestinationInfo(connection1,
&lt;br&gt;&amp;gt;&amp;gt; connectionInfo1, ActiveMQDestination.QUEUE_TYPE);
&lt;br&gt;&amp;gt;&amp;gt; -// &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; connection1.send(createMessage(producerInfo,
&lt;br&gt;&amp;gt;&amp;gt; destinationInfo1, DeliveryMode.NON_PERSISTENT));
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; connection1.request(createMessage(producerInfo,
&lt;br&gt;&amp;gt;&amp;gt; destinationInfo1, DeliveryMode.NON_PERSISTENT));
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;destinationInfo1 = createDestinationInfo(connection1,
&lt;br&gt;&amp;gt;&amp;gt; connectionInfo1, ActiveMQDestination.QUEUE_TYPE);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;connection1.request(createMessage(producerInfo,
&lt;br&gt;&amp;gt;&amp;gt; destinationInfo1, DeliveryMode.NON_PERSISTENT));
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Ensure that there are 10 messages on the local broker
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int messageCount1 = countMessagesInQueue(connection1,
&lt;br&gt;&amp;gt;&amp;gt; connectionInfo1, destinationInfo1);
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(10, messageCount1);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Object[] messages = browseQueueWithJmx(localBroker);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(sendNumMessages, messages.length);
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Create a consumer on the remote broker
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Create a synchronous consumer on the remote broker
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; final StubConnection connection2 = createRemoteConnection();
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ConnectionInfo connectionInfo2 = createConnectionInfo();
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SessionInfo sessionInfo2 = createSessionInfo(connectionInfo2);
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; connection2.send(connectionInfo2);
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; connection2.send(sessionInfo2);
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ActiveMQDestination destinationInfo2 =
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; createDestinationInfo(connection2, connectionInfo2,
&lt;br&gt;&amp;gt;&amp;gt; ActiveMQDestination.QUEUE_TYPE);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;createDestinationInfo(connection2, connectionInfo2,
&lt;br&gt;&amp;gt;&amp;gt; ActiveMQDestination.QUEUE_TYPE);
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; final ConsumerInfo consumerInfo2 =
&lt;br&gt;&amp;gt;&amp;gt; createConsumerInfo(sessionInfo2, destinationInfo2);
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; connection2.send(consumerInfo2);
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; @@ -149,32 +179,27 @@
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // method, this will cause the messages on the local broker to be
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // forwarded to the remote broker.
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (int i = 0; i &amp;lt; receiveNumMessages; ++i) {
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; assertTrue(&amp;quot;Message &amp;quot; + i + &amp;quot; was not received&amp;quot;,
&lt;br&gt;&amp;gt;&amp;gt; Wait.waitFor(new Wait.Condition() {
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public boolean isSatisified() throws Exception {
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Message message1 =
&lt;br&gt;&amp;gt;&amp;gt; receiveMessage(connection2);
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; assertNotNull(message1);
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; connection2.send(createAck(consumerInfo2,
&lt;br&gt;&amp;gt;&amp;gt; message1, 1, MessageAck.STANDARD_ACK_TYPE));
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return message1 != null;
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}));
&lt;br&gt;&amp;gt;&amp;gt; -// &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Message message1 = receiveMessage(connection2);
&lt;br&gt;&amp;gt;&amp;gt; -// &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; assertNotNull(message1);
&lt;br&gt;&amp;gt;&amp;gt; -// &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;connection2.send(createAck(consumerInfo2, message1, 1,
&lt;br&gt;&amp;gt;&amp;gt; MessageAck.STANDARD_ACK_TYPE));
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Message message1 = receiveMessage(connection2);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertNotNull(message1);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;connection2.send(createAck(consumerInfo2, message1, 1,
&lt;br&gt;&amp;gt;&amp;gt; MessageAck.STANDARD_ACK_TYPE));
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Object[] msgs1 = browseQueueWithJmx(remoteBroker);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;LOG.info(&amp;quot;Found [&amp;quot; + msgs1.length + &amp;quot;] messages with JMX&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt; +// &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals((sendNumMessages-i), msgs.length);
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Close the consumer on the remote broker
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;connection2.send(consumerInfo2.createRemoveCommand());
&lt;br&gt;&amp;gt;&amp;gt; -
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Ensure that there are zero messages on the local broker. This
&lt;br&gt;&amp;gt;&amp;gt; tells
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // us that those messages have been prefetched to the remote
&lt;br&gt;&amp;gt;&amp;gt; broker
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // where the demand exists.
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int messageCount2 = countMessagesInQueue(connection1,
&lt;br&gt;&amp;gt;&amp;gt; connectionInfo1, destinationInfo1);
&lt;br&gt;&amp;gt;&amp;gt; -// Sometimes it fails here
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(0, messageCount2);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;messages = browseQueueWithJmx(localBroker);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(0, messages.length);
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Close the consumer on the remote broker
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;connection2.send(consumerInfo2.createRemoveCommand());
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // There should now be 5 messages stuck on the remote broker
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int messageCount3 = countMessagesInQueue(connection2,
&lt;br&gt;&amp;gt;&amp;gt; connectionInfo2, destinationInfo2);
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(5, messageCount3);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;messages = browseQueueWithJmx(remoteBroker);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(5, messages.length);
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Create a consumer on the local broker just to confirm that it
&lt;br&gt;&amp;gt;&amp;gt; doesn't
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // receive any messages
&lt;br&gt;&amp;gt;&amp;gt; @@ -182,13 +207,13 @@
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; connection1.send(consumerInfo1);
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Message message1 = receiveMessage(connection1);
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //////////////////////////////////////////////////////
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//////////////////////////////////////////////////////
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // An assertNull() is done here because this is currently the
&lt;br&gt;&amp;gt;&amp;gt; correct
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // behavior. This is actually the purpose of this test - to prove
&lt;br&gt;&amp;gt;&amp;gt; that
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // messages are stuck on the remote broker. AMQ-2324 and AMQ-2484
&lt;br&gt;&amp;gt;&amp;gt; aim
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // to fix this situation so that messages don't get stuck.
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; assertNull(message1);
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //////////////////////////////////////////////////////
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//////////////////////////////////////////////////////
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ConsumerInfo consumerInfo3 = createConsumerInfo(sessionInfo2,
&lt;br&gt;&amp;gt;&amp;gt; destinationInfo2);
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; connection2.send(consumerInfo3);
&lt;br&gt;&amp;gt;&amp;gt; @@ -197,30 +222,247 @@
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // to clean up the queue.
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int counter = 0;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (int i = 0; i &amp;lt; receiveNumMessages; ++i) {
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; message1 = receiveMessage(connection2);
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; assertNotNull(message1);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;message1 = receiveMessage(connection2);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertNotNull(message1);
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; connection2.send(createAck(consumerInfo3, message1, 1,
&lt;br&gt;&amp;gt;&amp;gt; MessageAck.STANDARD_ACK_TYPE));
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ++counter;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Ensure that 5 messages were received
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; assertEquals(receiveNumMessages, counter);
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Thread.sleep(2000);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Let those acks percolate... This stinks but it's the only way
&lt;br&gt;&amp;gt;&amp;gt; currently
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// because these types of internal broker actions are
&lt;br&gt;&amp;gt;&amp;gt; non-deterministic.
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Thread.sleep(4000);
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Ensure that the queue on the remote broker is empty
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int messageCount4 = countMessagesInQueue(connection2,
&lt;br&gt;&amp;gt;&amp;gt; connectionInfo2, destinationInfo1);
&lt;br&gt;&amp;gt;&amp;gt; -// Sometimes it fails here
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(0, messageCount4);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;messages = browseQueueWithJmx(remoteBroker);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(0, messages.length);
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Close the consumer on the remote broker
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; connection2.send(consumerInfo3.createRemoveCommand());
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; connection1.stop();
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; connection2.stop();
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected BrokerService createBroker() throws Exception {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;localBroker = new BrokerService();
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;localBroker.setBrokerName(&amp;quot;localhost&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;localBroker.setUseJmx(true);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;localBroker.setPersistenceAdapter(null);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;localBroker.setPersistent(false);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;connector = createConnector();
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;localBroker.addConnector(connector);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;localBroker.start();
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;localBroker.waitUntilStarted();
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;localBroker.getManagementContext().setConnectorPort(2221);
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;brokers.put(localBroker.getBrokerName(), localBroker);
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return localBroker;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected BrokerService createRemoteBroker() throws Exception {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;remoteBroker = new BrokerService();
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;remoteBroker.setBrokerName(&amp;quot;remotehost&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;remoteBroker.setUseJmx(true);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;remoteBroker.setPersistenceAdapter(null);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;remoteBroker.setPersistent(false);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;remoteConnector = createRemoteConnector();
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;remoteBroker.addConnector(remoteConnector);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;remoteBroker.waitUntilStarted();
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;remoteBroker.getManagementContext().setConnectorPort(2222);
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;brokers.put(remoteBroker.getBrokerName(), remoteBroker);
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return remoteBroker;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected Transport createTransport() throws Exception {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Transport transport =
&lt;br&gt;&amp;gt;&amp;gt; TransportFactory.connect(connector.getServer().getConnectURI());
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return transport;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected Transport createRemoteTransport() throws Exception {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Transport transport =
&lt;br&gt;&amp;gt;&amp;gt; TransportFactory.connect(remoteConnector.getServer().getConnectURI());
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return transport;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected TransportConnector createConnector() throws Exception,
&lt;br&gt;&amp;gt;&amp;gt; IOException, URISyntaxException {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return new TransportConnector(TransportFactory.bind(new
&lt;br&gt;&amp;gt;&amp;gt; URI(getLocalURI())));
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected TransportConnector createRemoteConnector() throws
&lt;br&gt;&amp;gt;&amp;gt; Exception, IOException, URISyntaxException {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return new TransportConnector(TransportFactory.bind(new
&lt;br&gt;&amp;gt;&amp;gt; URI(getRemoteURI())));
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected String getRemoteURI() {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return &amp;quot;vm://remotehost&amp;quot;;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected String getLocalURI() {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return &amp;quot;vm://localhost&amp;quot;;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected StubConnection createConnection() throws Exception {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Transport transport =
&lt;br&gt;&amp;gt;&amp;gt; TransportFactory.connect(connector.getServer().getConnectURI());
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;StubConnection connection = new StubConnection(transport);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;connections.add(connection);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return connection;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected StubConnection createRemoteConnection() throws Exception {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Transport transport =
&lt;br&gt;&amp;gt;&amp;gt; TransportFactory.connect(remoteConnector.getServer().getConnectURI());
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;StubConnection connection = new StubConnection(transport);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;connections.add(connection);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return connection;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;@SuppressWarnings(&amp;quot;unchecked&amp;quot;)
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;private Object[] browseQueueWithJms(BrokerService broker) throws
&lt;br&gt;&amp;gt;&amp;gt; Exception {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Object[] messages = null;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Connection connection = null;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Session session = null;
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; URI brokerUri = connector.getUri();
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ActiveMQConnectionFactory connectionFactory = new
&lt;br&gt;&amp;gt;&amp;gt; ActiveMQConnectionFactory(brokerUri.toString());
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; connection = connectionFactory.createConnection();
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; connection.start();
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; session = connection.createSession(false,
&lt;br&gt;&amp;gt;&amp;gt; Session.AUTO_ACKNOWLEDGE);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Queue destination =
&lt;br&gt;&amp;gt;&amp;gt; session.createQueue(queueName);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; QueueBrowser browser =
&lt;br&gt;&amp;gt;&amp;gt; session.createBrowser(destination);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; List&amp;lt;Message&amp;gt; list = new ArrayList&amp;lt;Message&amp;gt;();
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (Enumeration&amp;lt;Message&amp;gt; enumn =
&lt;br&gt;&amp;gt;&amp;gt; browser.getEnumeration(); enumn.hasMoreElements();) {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; list.add(enumn.nextElement());
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; messages = list.toArray();
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; finally {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (session != null) {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; session.close();
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (connection != null) {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; connection.close();
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LOG.info(&amp;quot;+Browsed with JMS: &amp;quot; + messages.length);
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return messages;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; -
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp;public static Test suite() {
&lt;br&gt;&amp;gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return suite(BrokerNetworkWithStuckMessagesTest.class);
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;private Object[] browseQueueWithJmx(BrokerService broker) throws
&lt;br&gt;&amp;gt;&amp;gt; Exception {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Hashtable&amp;lt;String, String&amp;gt; params = new Hashtable&amp;lt;String,
&lt;br&gt;&amp;gt;&amp;gt; String&amp;gt;();
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;params.put(&amp;quot;BrokerName&amp;quot;, broker.getBrokerName());
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;params.put(&amp;quot;Type&amp;quot;, &amp;quot;Queue&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;params.put(&amp;quot;Destination&amp;quot;, queueName);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ObjectName queueObjectName = ObjectName.getInstance(amqDomain,
&lt;br&gt;&amp;gt;&amp;gt; params);
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ManagementContext mgmtCtx = broker.getManagementContext();
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;MBeanServer mbs = mgmtCtx.getMBeanServer();
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Object[] messages = (Object[]) mbs.invoke(queueObjectName,
&lt;br&gt;&amp;gt;&amp;gt; &amp;quot;browse&amp;quot;, new Object[0], new String[0]);
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LOG.info(&amp;quot;+Browsed with JMX: &amp;quot; + messages.length);
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return messages;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected ConnectionInfo createConnectionInfo() throws Exception {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ConnectionInfo info = new ConnectionInfo();
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;info.setConnectionId(new ConnectionId(&amp;quot;connection:&amp;quot; +
&lt;br&gt;&amp;gt;&amp;gt; (++idGenerator)));
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;info.setClientId(info.getConnectionId().getValue());
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return info;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected SessionInfo createSessionInfo(ConnectionInfo
&lt;br&gt;&amp;gt;&amp;gt; connectionInfo) throws Exception {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;SessionInfo info = new SessionInfo(connectionInfo,
&lt;br&gt;&amp;gt;&amp;gt; ++idGenerator);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return info;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected ProducerInfo createProducerInfo(SessionInfo sessionInfo)
&lt;br&gt;&amp;gt;&amp;gt; throws Exception {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ProducerInfo info = new ProducerInfo(sessionInfo, ++idGenerator);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return info;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected ConsumerInfo createConsumerInfo(SessionInfo sessionInfo,
&lt;br&gt;&amp;gt;&amp;gt; ActiveMQDestination destination) throws Exception {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ConsumerInfo info = new ConsumerInfo(sessionInfo, ++idGenerator);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;info.setBrowser(false);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;info.setDestination(destination);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;info.setPrefetchSize(1000);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;info.setDispatchAsync(false);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return info;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected DestinationInfo createTempDestinationInfo(ConnectionInfo
&lt;br&gt;&amp;gt;&amp;gt; connectionInfo, byte destinationType) {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;DestinationInfo info = new DestinationInfo();
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;info.setConnectionId(connectionInfo.getConnectionId());
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;info.setOperationType(DestinationInfo.ADD_OPERATION_TYPE);
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;info.setDestination(ActiveMQDestination.createDestination(info.getConnectionId()
&lt;br&gt;&amp;gt;&amp;gt; + &amp;quot;:&amp;quot; + (++tempDestGenerator), destinationType));
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return info;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected ActiveMQDestination createDestinationInfo(StubConnection
&lt;br&gt;&amp;gt;&amp;gt; connection, ConnectionInfo connectionInfo1, byte destinationType) throws
&lt;br&gt;&amp;gt;&amp;gt; Exception {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if ((destinationType &amp; ActiveMQDestination.TEMP_MASK) != 0) {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;DestinationInfo info =
&lt;br&gt;&amp;gt;&amp;gt; createTempDestinationInfo(connectionInfo1, destinationType);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;connection.send(info);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return info.getDestination();
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} else {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return ActiveMQDestination.createDestination(queueName,
&lt;br&gt;&amp;gt;&amp;gt; destinationType);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected Message createMessage(ProducerInfo producerInfo,
&lt;br&gt;&amp;gt;&amp;gt; ActiveMQDestination destination, int deliveryMode) {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Message message = createMessage(producerInfo, destination);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;message.setPersistent(deliveryMode == DeliveryMode.PERSISTENT);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return message;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected Message createMessage(ProducerInfo producerInfo,
&lt;br&gt;&amp;gt;&amp;gt; ActiveMQDestination destination) {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ActiveMQTextMessage message = new ActiveMQTextMessage();
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;message.setMessageId(new MessageId(producerInfo,
&lt;br&gt;&amp;gt;&amp;gt; ++msgIdGenerator));
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;message.setDestination(destination);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;message.setPersistent(false);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;message.setText(&amp;quot;Test Message Payload.&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (MessageNotWriteableException e) {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return message;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected MessageAck createAck(ConsumerInfo consumerInfo, Message
&lt;br&gt;&amp;gt;&amp;gt; msg, int count, byte ackType) {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;MessageAck ack = new MessageAck();
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ack.setAckType(ackType);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ack.setConsumerId(consumerInfo.getConsumerId());
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ack.setDestination(msg.getDestination());
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ack.setLastMessageId(msg.getMessageId());
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ack.setMessageCount(count);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return ack;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;public Message receiveMessage(StubConnection connection) throws
&lt;br&gt;&amp;gt;&amp;gt; InterruptedException {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return receiveMessage(connection, maxWait);
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp;public Message receiveMessage(StubConnection connection, long
&lt;br&gt;&amp;gt;&amp;gt; timeout) throws InterruptedException {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;while (true) {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Object o = connection.getDispatchQueue().poll(timeout,
&lt;br&gt;&amp;gt;&amp;gt; TimeUnit.MILLISECONDS);
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (o == null) {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return null;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (o instanceof MessageDispatch) {
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;MessageDispatch dispatch = (MessageDispatch)o;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (dispatch.getMessage() == null) {
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return null;
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dispatch.setMessage(dispatch.getMessage().copy());
&lt;br&gt;&amp;gt;&amp;gt; +
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;dispatch.getMessage().setRedeliveryCounter(dispatch.getRedeliveryCounter());
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return dispatch.getMessage();
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; --
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://blog.garytully.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://blog.garytully.com&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Open Source Integration
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://fusesource.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://fusesource.com&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;&lt;a href=&quot;http://blog.garytully.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://blog.garytully.com&lt;/a&gt;&lt;br&gt;&lt;br&gt;Open Source Integration
&lt;br&gt;&lt;a href=&quot;http://fusesource.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://fusesource.com&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A-svn-commit%3A-r883411----activemq-trunk-activemq-core-src-test-java-org-apache-activemq-network-BrokerNetworkWithStuckMessagesTest.java-tp26483359p26483800.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26483734</id>
	<title>[jira] Resolved: (AMQ-2489) &quot;Could not correlate acknowledgment with dispatched message&quot; exception</title>
	<published>2009-11-23T10:45:54Z</published>
	<updated>2009-11-23T10:45:54Z</updated>
	<author>
		<name>JIRA jira@apache.org</name>
	</author>
	<content type="html">&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;[ &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQ-2489?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQ-2489?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel&lt;/a&gt;&amp;nbsp;]
&lt;br&gt;&lt;br&gt;Gary Tully resolved AMQ-2489.
&lt;br&gt;-----------------------------
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Resolution: Fixed
&lt;br&gt;&amp;nbsp; &amp;nbsp; Fix Version/s: 5.4.0
&lt;br&gt;&lt;br&gt;resolved in r883458 - delivery acks are only needed for unacked messages to update prefetch and expiry. When message is acked, they should be suppressed as they now are as they will result in this exception due to not found in the dispatch list.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;quot;Could not correlate acknowledgment with dispatched message&amp;quot; exception
&lt;br&gt;&amp;gt; ----------------------------------------------------------------------
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Key: AMQ-2489
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; URL: &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQ-2489&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQ-2489&lt;/a&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Project: ActiveMQ
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Issue Type: Bug
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;Affects Versions: 5.1.0, 5.3.0, 5.4.0
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Reporter: Dariusz Szablinski
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Assignee: Gary Tully
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Fix For: 5.3.1, 5.4.0
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Attachments: JmsUnorderedAsynchAckTest.java
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; This exception is thrown on broker side when two or more ASYNCH consumers acknowledges messages in not in order they received the messages.
&lt;br&gt;&amp;gt; See more on users list: &lt;a href=&quot;http://old.nabble.com/%22Could-not-correlate-acknowledgment-with-dispatched-message%22-td26308220.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://old.nabble.com/%22Could-not-correlate-acknowledgment-with-dispatched-message%22-td26308220.html&lt;/a&gt;&lt;br&gt;&amp;gt; Simple unit test attached.
&lt;/div&gt;&lt;br&gt;-- 
&lt;br&gt;This message is automatically generated by JIRA.
&lt;br&gt;-
&lt;br&gt;You can reply to this email to add a comment to the issue online.
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-jira--Created%3A-%28AMQ-2489%29-%22Could-not-correlate-acknowledgment-with-dispatched-message%22-exception-tp26326377p26483734.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26483359</id>
	<title>Re: svn commit: r883411 - /activemq/trunk/activemq-core/src/test/java/org/apache/activemq/network/BrokerNetworkWithStuckMessagesTest.java</title>
	<published>2009-11-23T10:21:24Z</published>
	<updated>2009-11-23T10:21:24Z</updated>
	<author>
		<name>Gary Tully</name>
	</author>
	<content type="html">this breaks the build, getMBeanServer() is intentionally protected in
&lt;br&gt;ManagementContext.
&lt;br&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;activemq_t/activemq-core/src/test/java/org/apache/activemq/network/BrokerNetworkWithStuckMessagesTest.java:[364,33]
&lt;br&gt;getMBeanServer() has protected access in
&lt;br&gt;org.apache.activemq.broker.jmx.ManagementContext
&lt;br&gt;&lt;br&gt;2009/11/23 &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26483359&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;bsnyder@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Author: bsnyder
&lt;br&gt;&amp;gt; Date: Mon Nov 23 17:02:39 2009
&lt;br&gt;&amp;gt; New Revision: 883411
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=883411&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=883411&amp;view=rev&lt;/a&gt;&lt;br&gt;&amp;gt; Log:
&lt;br&gt;&amp;gt; Updated test for AMQ-2324 and AMQ-2484
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Modified:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp;activemq/trunk/activemq-core/src/test/java/org/apache/activemq/network/BrokerNetworkWithStuckMessagesTest.java
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Modified:
&lt;br&gt;&amp;gt; activemq/trunk/activemq-core/src/test/java/org/apache/activemq/network/BrokerNetworkWithStuckMessagesTest.java
&lt;br&gt;&amp;gt; URL:
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/network/BrokerNetworkWithStuckMessagesTest.java?rev=883411&amp;r1=883410&amp;r2=883411&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/network/BrokerNetworkWithStuckMessagesTest.java?rev=883411&amp;r1=883410&amp;r2=883411&amp;view=diff&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; ==============================================================================
&lt;br&gt;&amp;gt; ---
&lt;br&gt;&amp;gt; activemq/trunk/activemq-core/src/test/java/org/apache/activemq/network/BrokerNetworkWithStuckMessagesTest.java
&lt;br&gt;&amp;gt; (original)
&lt;br&gt;&amp;gt; +++
&lt;br&gt;&amp;gt; activemq/trunk/activemq-core/src/test/java/org/apache/activemq/network/BrokerNetworkWithStuckMessagesTest.java
&lt;br&gt;&amp;gt; Mon Nov 23 17:02:39 2009
&lt;br&gt;&amp;gt; @@ -2,35 +2,102 @@
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp;import java.io.File;
&lt;br&gt;&amp;gt; &amp;nbsp;import java.io.IOException;
&lt;br&gt;&amp;gt; +import java.net.URI;
&lt;br&gt;&amp;gt; +import java.net.URISyntaxException;
&lt;br&gt;&amp;gt; +import java.util.ArrayList;
&lt;br&gt;&amp;gt; +import java.util.Enumeration;
&lt;br&gt;&amp;gt; +import java.util.HashMap;
&lt;br&gt;&amp;gt; +import java.util.Hashtable;
&lt;br&gt;&amp;gt; +import java.util.List;
&lt;br&gt;&amp;gt; +import java.util.Map;
&lt;br&gt;&amp;gt; +import java.util.concurrent.TimeUnit;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; +import javax.jms.Connection;
&lt;br&gt;&amp;gt; &amp;nbsp;import javax.jms.DeliveryMode;
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; -import junit.framework.Test;
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; +import javax.jms.MessageNotWriteableException;
&lt;br&gt;&amp;gt; +import javax.jms.Queue;
&lt;br&gt;&amp;gt; +import javax.jms.QueueBrowser;
&lt;br&gt;&amp;gt; +import javax.jms.Session;
&lt;br&gt;&amp;gt; +import javax.management.MBeanServer;
&lt;br&gt;&amp;gt; +import javax.management.ObjectName;
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +import junit.framework.TestCase;
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +import org.apache.activemq.ActiveMQConnectionFactory;
&lt;br&gt;&amp;gt; +import org.apache.activemq.broker.BrokerService;
&lt;br&gt;&amp;gt; +import org.apache.activemq.broker.BrokerTestSupport;
&lt;br&gt;&amp;gt; &amp;nbsp;import org.apache.activemq.broker.StubConnection;
&lt;br&gt;&amp;gt; +import org.apache.activemq.broker.TransportConnector;
&lt;br&gt;&amp;gt; +import org.apache.activemq.broker.jmx.ManagementContext;
&lt;br&gt;&amp;gt; &amp;nbsp;import org.apache.activemq.command.ActiveMQDestination;
&lt;br&gt;&amp;gt; -import org.apache.activemq.command.Command;
&lt;br&gt;&amp;gt; +import org.apache.activemq.command.ActiveMQTextMessage;
&lt;br&gt;&amp;gt; +import org.apache.activemq.command.ConnectionId;
&lt;br&gt;&amp;gt; &amp;nbsp;import org.apache.activemq.command.ConnectionInfo;
&lt;br&gt;&amp;gt; &amp;nbsp;import org.apache.activemq.command.ConsumerInfo;
&lt;br&gt;&amp;gt; +import org.apache.activemq.command.DestinationInfo;
&lt;br&gt;&amp;gt; &amp;nbsp;import org.apache.activemq.command.Message;
&lt;br&gt;&amp;gt; &amp;nbsp;import org.apache.activemq.command.MessageAck;
&lt;br&gt;&amp;gt; +import org.apache.activemq.command.MessageDispatch;
&lt;br&gt;&amp;gt; +import org.apache.activemq.command.MessageId;
&lt;br&gt;&amp;gt; &amp;nbsp;import org.apache.activemq.command.ProducerInfo;
&lt;br&gt;&amp;gt; &amp;nbsp;import org.apache.activemq.command.SessionInfo;
&lt;br&gt;&amp;gt; &amp;nbsp;import org.apache.activemq.transport.Transport;
&lt;br&gt;&amp;gt; -import org.apache.activemq.transport.TransportListener;
&lt;br&gt;&amp;gt; +import org.apache.activemq.transport.TransportFactory;
&lt;br&gt;&amp;gt; &amp;nbsp;import org.apache.activemq.util.Wait;
&lt;br&gt;&amp;gt; &amp;nbsp;import org.apache.commons.io.FileUtils;
&lt;br&gt;&amp;gt; &amp;nbsp;import org.apache.commons.logging.Log;
&lt;br&gt;&amp;gt; &amp;nbsp;import org.apache.commons.logging.LogFactory;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -public class BrokerNetworkWithStuckMessagesTest extends NetworkTestSupport
&lt;br&gt;&amp;gt; {
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; +/**
&lt;br&gt;&amp;gt; + * This class duplicates most of the functionality in {@link
&lt;br&gt;&amp;gt; NetworkTestSupport}
&lt;br&gt;&amp;gt; + * and {@link BrokerTestSupport} because more control was needed over how
&lt;br&gt;&amp;gt; brokers
&lt;br&gt;&amp;gt; + * and connectors are created. Also, this test asserts message counts via
&lt;br&gt;&amp;gt; JMX on
&lt;br&gt;&amp;gt; + * each broker.
&lt;br&gt;&amp;gt; + *
&lt;br&gt;&amp;gt; + * @author bsnyder
&lt;br&gt;&amp;gt; + *
&lt;br&gt;&amp;gt; + */
&lt;br&gt;&amp;gt; +public class BrokerNetworkWithStuckMessagesTest extends TestCase
&lt;br&gt;&amp;gt; /*NetworkTestSupport*/ {
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; private static final Log LOG =
&lt;br&gt;&amp;gt; LogFactory.getLog(BrokerNetworkWithStuckMessagesTest.class);
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; private DemandForwardingBridge bridge;
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; protected void setUp() throws Exception {
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;super.setUp();
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;private BrokerService localBroker;
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;private BrokerService remoteBroker;
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;private DemandForwardingBridge bridge;
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected Map&amp;lt;String, BrokerService&amp;gt; brokers = new HashMap&amp;lt;String,
&lt;br&gt;&amp;gt; BrokerService&amp;gt;();
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected ArrayList connections = new ArrayList();
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected TransportConnector connector;
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected TransportConnector remoteConnector;
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected long idGenerator;
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected int msgIdGenerator;
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected int tempDestGenerator;
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected int maxWait = 4000;
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected String queueName = &amp;quot;TEST&amp;quot;;
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected String amqDomain = &amp;quot;org.apache.activemq&amp;quot;;
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected void setUp() throws Exception {
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// For those who want visual confirmation:
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; Uncomment the following to enable JMX support on a port
&lt;br&gt;&amp;gt; number to use
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; Jconsole to view each broker. You will need to add some calls
&lt;br&gt;&amp;gt; to
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; Thread.sleep() to be able to actually slow things down so
&lt;br&gt;&amp;gt; that you
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp; can manually see JMX attrs.
&lt;br&gt;&amp;gt; +// &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;System.setProperty(&amp;quot;com.sun.management.jmxremote&amp;quot;, &amp;quot;&amp;quot;);
&lt;br&gt;&amp;gt; +// &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;System.setProperty(&amp;quot;com.sun.management.jmxremote.port&amp;quot;, &amp;quot;1099&amp;quot;);
&lt;br&gt;&amp;gt; +// &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;System.setProperty(&amp;quot;com.sun.management.jmxremote.authenticate&amp;quot;,
&lt;br&gt;&amp;gt; &amp;quot;false&amp;quot;);
&lt;br&gt;&amp;gt; +// &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;System.setProperty(&amp;quot;com.sun.management.jmxremote.ssl&amp;quot;, &amp;quot;false&amp;quot;);
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Create the local broker
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;createBroker();
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Create the remote broker
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;createRemoteBroker();
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Remove the activemq-data directory from the creation of the
&lt;br&gt;&amp;gt; remote broker
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FileUtils.deleteDirectory(new File(&amp;quot;activemq-data&amp;quot;));
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Create a network bridge between the local and remote brokers so
&lt;br&gt;&amp;gt; that
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // demand-based forwarding can take place
&lt;br&gt;&amp;gt; @@ -39,79 +106,42 @@
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; config.setDispatchAsync(false);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Transport localTransport = createTransport();
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;localTransport.setTransportListener(new TransportListener() {
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Command command = null;
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void onCommand(Object o) {
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.command = (Command) o;
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LOG.info(&amp;quot;Command from [&amp;quot; +
&lt;br&gt;&amp;gt; command.getFrom() + &amp;quot;] to [&amp;quot; + command.getTo() + &amp;quot;]&amp;quot;);
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void onException(IOException error) {
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LOG.info(&amp;quot;Command from [&amp;quot; +
&lt;br&gt;&amp;gt; command.getFrom() + &amp;quot;] to [&amp;quot; + command.getTo() + &amp;quot;]&amp;quot;);
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LOG.info(&amp;quot;Exception: &amp;quot; + error);
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void transportInterupted() {
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LOG.info(&amp;quot;Interruption on local
&lt;br&gt;&amp;gt; transport&amp;quot;);
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void transportResumed() {
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LOG.info(&amp;quot;Resumption on local transport&amp;quot;);
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;});
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Transport remoteTransport = createRemoteTransport();
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;remoteTransport.setTransportListener(new TransportListener() {
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Command command = null;
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void onCommand(Object o) {
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.command = (Command) o;
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LOG.info(&amp;quot;Command from [&amp;quot; +
&lt;br&gt;&amp;gt; command.getFrom() + &amp;quot;] to [&amp;quot; + command.getTo() + &amp;quot;]&amp;quot;);
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void onException(IOException error) {
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LOG.info(&amp;quot;Command from [&amp;quot; +
&lt;br&gt;&amp;gt; command.getFrom() + &amp;quot;] to [&amp;quot; + command.getTo() + &amp;quot;]&amp;quot;);
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LOG.info(&amp;quot;Exception: &amp;quot; + error);
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void transportInterupted() {
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LOG.info(&amp;quot;Interruption on remote
&lt;br&gt;&amp;gt; transport&amp;quot;);
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void transportResumed() {
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LOG.info(&amp;quot;Resumption on remote transport&amp;quot;);
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;});
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Create a network bridge between the two brokers
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bridge = new DemandForwardingBridge(config, localTransport,
&lt;br&gt;&amp;gt; remoteTransport);
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;bridge.setBrokerService(broker);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;bridge.setBrokerService(localBroker);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bridge.start();
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Enable JMX support on the local and remote brokers
&lt;br&gt;&amp;gt; -// &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;broker.setUseJmx(true);
&lt;br&gt;&amp;gt; -// &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;remoteBroker.setUseJmx(true);
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Make sure persistence is disabled
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;broker.setPersistent(false);
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;broker.setPersistenceAdapter(null);
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;remoteBroker.setPersistent(false);
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;remoteBroker.setPersistenceAdapter(null);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;waitForBridgeFormation();
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Remove the activemq-data directory from the creation of the
&lt;br&gt;&amp;gt; remote broker
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FileUtils.deleteDirectory(new File(&amp;quot;activemq-data&amp;quot;));
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; protected void tearDown() throws Exception {
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected void waitForBridgeFormation() throws Exception {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (final BrokerService broker : brokers.values()) {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!broker.getNetworkConnectors().isEmpty()) {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Max wait here is 30 secs
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Wait.waitFor(new Wait.Condition() {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public boolean isSatisified() throws Exception {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return
&lt;br&gt;&amp;gt; !broker.getNetworkConnectors().get(0).activeBridges().isEmpty();
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}});
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected void tearDown() throws Exception {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bridge.stop();
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;super.tearDown();
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;localBroker.stop();
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;remoteBroker.stop();
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; public void testBrokerNetworkWithStuckMessages() throws Exception {
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int sendNumMessages = 10;
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int receiveNumMessages = 5;
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Create a producer and send a batch of 10 messages to the
&lt;br&gt;&amp;gt; local broker
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; StubConnection connection1 = createConnection();
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;public void testBrokerNetworkWithStuckMessages() throws Exception {
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int sendNumMessages = 10;
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int receiveNumMessages = 5;
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Create a producer
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;StubConnection connection1 = createConnection();
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ConnectionInfo connectionInfo1 = createConnectionInfo();
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SessionInfo sessionInfo1 = createSessionInfo(connectionInfo1);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ProducerInfo producerInfo = createProducerInfo(sessionInfo1);
&lt;br&gt;&amp;gt; @@ -122,25 +152,25 @@
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Create a destination on the local broker
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ActiveMQDestination destinationInfo1 = null;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Send a 10 messages to the local broker
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (int i = 0; i &amp;lt; sendNumMessages; ++i) {
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; destinationInfo1 = createDestinationInfo(connection1,
&lt;br&gt;&amp;gt; connectionInfo1, ActiveMQDestination.QUEUE_TYPE);
&lt;br&gt;&amp;gt; -// &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; connection1.send(createMessage(producerInfo,
&lt;br&gt;&amp;gt; destinationInfo1, DeliveryMode.NON_PERSISTENT));
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; connection1.request(createMessage(producerInfo,
&lt;br&gt;&amp;gt; destinationInfo1, DeliveryMode.NON_PERSISTENT));
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;destinationInfo1 = createDestinationInfo(connection1,
&lt;br&gt;&amp;gt; connectionInfo1, ActiveMQDestination.QUEUE_TYPE);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;connection1.request(createMessage(producerInfo,
&lt;br&gt;&amp;gt; destinationInfo1, DeliveryMode.NON_PERSISTENT));
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Ensure that there are 10 messages on the local broker
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int messageCount1 = countMessagesInQueue(connection1,
&lt;br&gt;&amp;gt; connectionInfo1, destinationInfo1);
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(10, messageCount1);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Object[] messages = browseQueueWithJmx(localBroker);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(sendNumMessages, messages.length);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Create a consumer on the remote broker
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Create a synchronous consumer on the remote broker
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; final StubConnection connection2 = createRemoteConnection();
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ConnectionInfo connectionInfo2 = createConnectionInfo();
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SessionInfo sessionInfo2 = createSessionInfo(connectionInfo2);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; connection2.send(connectionInfo2);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; connection2.send(sessionInfo2);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ActiveMQDestination destinationInfo2 =
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; createDestinationInfo(connection2, connectionInfo2,
&lt;br&gt;&amp;gt; ActiveMQDestination.QUEUE_TYPE);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;createDestinationInfo(connection2, connectionInfo2,
&lt;br&gt;&amp;gt; ActiveMQDestination.QUEUE_TYPE);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; final ConsumerInfo consumerInfo2 = createConsumerInfo(sessionInfo2,
&lt;br&gt;&amp;gt; destinationInfo2);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; connection2.send(consumerInfo2);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; @@ -149,32 +179,27 @@
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // method, this will cause the messages on the local broker to be
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // forwarded to the remote broker.
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (int i = 0; i &amp;lt; receiveNumMessages; ++i) {
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; assertTrue(&amp;quot;Message &amp;quot; + i + &amp;quot; was not received&amp;quot;,
&lt;br&gt;&amp;gt; Wait.waitFor(new Wait.Condition() {
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public boolean isSatisified() throws Exception {
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Message message1 =
&lt;br&gt;&amp;gt; receiveMessage(connection2);
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; assertNotNull(message1);
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; connection2.send(createAck(consumerInfo2,
&lt;br&gt;&amp;gt; message1, 1, MessageAck.STANDARD_ACK_TYPE));
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return message1 != null;
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}));
&lt;br&gt;&amp;gt; -// &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Message message1 = receiveMessage(connection2);
&lt;br&gt;&amp;gt; -// &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; assertNotNull(message1);
&lt;br&gt;&amp;gt; -// &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;connection2.send(createAck(consumerInfo2, message1, 1,
&lt;br&gt;&amp;gt; MessageAck.STANDARD_ACK_TYPE));
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Message message1 = receiveMessage(connection2);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertNotNull(message1);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;connection2.send(createAck(consumerInfo2, message1, 1,
&lt;br&gt;&amp;gt; MessageAck.STANDARD_ACK_TYPE));
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Object[] msgs1 = browseQueueWithJmx(remoteBroker);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;LOG.info(&amp;quot;Found [&amp;quot; + msgs1.length + &amp;quot;] messages with JMX&amp;quot;);
&lt;br&gt;&amp;gt; +// &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals((sendNumMessages-i), msgs.length);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Close the consumer on the remote broker
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;connection2.send(consumerInfo2.createRemoveCommand());
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Ensure that there are zero messages on the local broker. This
&lt;br&gt;&amp;gt; tells
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // us that those messages have been prefetched to the remote broker
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // where the demand exists.
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int messageCount2 = countMessagesInQueue(connection1,
&lt;br&gt;&amp;gt; connectionInfo1, destinationInfo1);
&lt;br&gt;&amp;gt; -// Sometimes it fails here
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(0, messageCount2);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;messages = browseQueueWithJmx(localBroker);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(0, messages.length);
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Close the consumer on the remote broker
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;connection2.send(consumerInfo2.createRemoveCommand());
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // There should now be 5 messages stuck on the remote broker
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int messageCount3 = countMessagesInQueue(connection2,
&lt;br&gt;&amp;gt; connectionInfo2, destinationInfo2);
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(5, messageCount3);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;messages = browseQueueWithJmx(remoteBroker);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(5, messages.length);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Create a consumer on the local broker just to confirm that it
&lt;br&gt;&amp;gt; doesn't
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // receive any messages
&lt;br&gt;&amp;gt; @@ -182,13 +207,13 @@
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; connection1.send(consumerInfo1);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Message message1 = receiveMessage(connection1);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //////////////////////////////////////////////////////
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//////////////////////////////////////////////////////
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // An assertNull() is done here because this is currently the
&lt;br&gt;&amp;gt; correct
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // behavior. This is actually the purpose of this test - to prove
&lt;br&gt;&amp;gt; that
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // messages are stuck on the remote broker. AMQ-2324 and AMQ-2484
&lt;br&gt;&amp;gt; aim
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // to fix this situation so that messages don't get stuck.
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; assertNull(message1);
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //////////////////////////////////////////////////////
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//////////////////////////////////////////////////////
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ConsumerInfo consumerInfo3 = createConsumerInfo(sessionInfo2,
&lt;br&gt;&amp;gt; destinationInfo2);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; connection2.send(consumerInfo3);
&lt;br&gt;&amp;gt; @@ -197,30 +222,247 @@
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // to clean up the queue.
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int counter = 0;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (int i = 0; i &amp;lt; receiveNumMessages; ++i) {
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; message1 = receiveMessage(connection2);
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; assertNotNull(message1);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;message1 = receiveMessage(connection2);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertNotNull(message1);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; connection2.send(createAck(consumerInfo3, message1, 1,
&lt;br&gt;&amp;gt; MessageAck.STANDARD_ACK_TYPE));
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ++counter;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Ensure that 5 messages were received
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; assertEquals(receiveNumMessages, counter);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Thread.sleep(2000);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Let those acks percolate... This stinks but it's the only way
&lt;br&gt;&amp;gt; currently
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// because these types of internal broker actions are
&lt;br&gt;&amp;gt; non-deterministic.
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Thread.sleep(4000);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Ensure that the queue on the remote broker is empty
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int messageCount4 = countMessagesInQueue(connection2,
&lt;br&gt;&amp;gt; connectionInfo2, destinationInfo1);
&lt;br&gt;&amp;gt; -// Sometimes it fails here
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(0, messageCount4);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;messages = browseQueueWithJmx(remoteBroker);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(0, messages.length);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Close the consumer on the remote broker
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; connection2.send(consumerInfo3.createRemoveCommand());
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; connection1.stop();
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; connection2.stop();
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected BrokerService createBroker() throws Exception {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;localBroker = new BrokerService();
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;localBroker.setBrokerName(&amp;quot;localhost&amp;quot;);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;localBroker.setUseJmx(true);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;localBroker.setPersistenceAdapter(null);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;localBroker.setPersistent(false);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;connector = createConnector();
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;localBroker.addConnector(connector);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;localBroker.start();
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;localBroker.waitUntilStarted();
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;localBroker.getManagementContext().setConnectorPort(2221);
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;brokers.put(localBroker.getBrokerName(), localBroker);
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return localBroker;
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected BrokerService createRemoteBroker() throws Exception {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;remoteBroker = new BrokerService();
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;remoteBroker.setBrokerName(&amp;quot;remotehost&amp;quot;);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;remoteBroker.setUseJmx(true);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;remoteBroker.setPersistenceAdapter(null);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;remoteBroker.setPersistent(false);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;remoteConnector = createRemoteConnector();
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;remoteBroker.addConnector(remoteConnector);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;remoteBroker.waitUntilStarted();
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;remoteBroker.getManagementContext().setConnectorPort(2222);
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;brokers.put(remoteBroker.getBrokerName(), remoteBroker);
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return remoteBroker;
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected Transport createTransport() throws Exception {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Transport transport =
&lt;br&gt;&amp;gt; TransportFactory.connect(connector.getServer().getConnectURI());
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return transport;
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected Transport createRemoteTransport() throws Exception {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Transport transport =
&lt;br&gt;&amp;gt; TransportFactory.connect(remoteConnector.getServer().getConnectURI());
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return transport;
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected TransportConnector createConnector() throws Exception,
&lt;br&gt;&amp;gt; IOException, URISyntaxException {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return new TransportConnector(TransportFactory.bind(new
&lt;br&gt;&amp;gt; URI(getLocalURI())));
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected TransportConnector createRemoteConnector() throws Exception,
&lt;br&gt;&amp;gt; IOException, URISyntaxException {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return new TransportConnector(TransportFactory.bind(new
&lt;br&gt;&amp;gt; URI(getRemoteURI())));
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected String getRemoteURI() {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return &amp;quot;vm://remotehost&amp;quot;;
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected String getLocalURI() {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return &amp;quot;vm://localhost&amp;quot;;
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected StubConnection createConnection() throws Exception {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Transport transport =
&lt;br&gt;&amp;gt; TransportFactory.connect(connector.getServer().getConnectURI());
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;StubConnection connection = new StubConnection(transport);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;connections.add(connection);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return connection;
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected StubConnection createRemoteConnection() throws Exception {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Transport transport =
&lt;br&gt;&amp;gt; TransportFactory.connect(remoteConnector.getServer().getConnectURI());
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;StubConnection connection = new StubConnection(transport);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;connections.add(connection);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return connection;
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;@SuppressWarnings(&amp;quot;unchecked&amp;quot;)
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;private Object[] browseQueueWithJms(BrokerService broker) throws
&lt;br&gt;&amp;gt; Exception {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Object[] messages = null;
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Connection connection = null;
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Session session = null;
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; URI brokerUri = connector.getUri();
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ActiveMQConnectionFactory connectionFactory = new
&lt;br&gt;&amp;gt; ActiveMQConnectionFactory(brokerUri.toString());
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; connection = connectionFactory.createConnection();
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; connection.start();
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; session = connection.createSession(false,
&lt;br&gt;&amp;gt; Session.AUTO_ACKNOWLEDGE);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Queue destination = session.createQueue(queueName);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; QueueBrowser browser =
&lt;br&gt;&amp;gt; session.createBrowser(destination);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; List&amp;lt;Message&amp;gt; list = new ArrayList&amp;lt;Message&amp;gt;();
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (Enumeration&amp;lt;Message&amp;gt; enumn =
&lt;br&gt;&amp;gt; browser.getEnumeration(); enumn.hasMoreElements();) {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; list.add(enumn.nextElement());
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; messages = list.toArray();
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; finally {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (session != null) {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; session.close();
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (connection != null) {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; connection.close();
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LOG.info(&amp;quot;+Browsed with JMS: &amp;quot; + messages.length);
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return messages;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp;public static Test suite() {
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return suite(BrokerNetworkWithStuckMessagesTest.class);
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;private Object[] browseQueueWithJmx(BrokerService broker) throws
&lt;br&gt;&amp;gt; Exception {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Hashtable&amp;lt;String, String&amp;gt; params = new Hashtable&amp;lt;String,
&lt;br&gt;&amp;gt; String&amp;gt;();
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;params.put(&amp;quot;BrokerName&amp;quot;, broker.getBrokerName());
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;params.put(&amp;quot;Type&amp;quot;, &amp;quot;Queue&amp;quot;);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;params.put(&amp;quot;Destination&amp;quot;, queueName);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ObjectName queueObjectName = ObjectName.getInstance(amqDomain,
&lt;br&gt;&amp;gt; params);
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ManagementContext mgmtCtx = broker.getManagementContext();
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;MBeanServer mbs = mgmtCtx.getMBeanServer();
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Object[] messages = (Object[]) mbs.invoke(queueObjectName,
&lt;br&gt;&amp;gt; &amp;quot;browse&amp;quot;, new Object[0], new String[0]);
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LOG.info(&amp;quot;+Browsed with JMX: &amp;quot; + messages.length);
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return messages;
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected ConnectionInfo createConnectionInfo() throws Exception {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ConnectionInfo info = new ConnectionInfo();
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;info.setConnectionId(new ConnectionId(&amp;quot;connection:&amp;quot; +
&lt;br&gt;&amp;gt; (++idGenerator)));
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;info.setClientId(info.getConnectionId().getValue());
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return info;
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected SessionInfo createSessionInfo(ConnectionInfo connectionInfo)
&lt;br&gt;&amp;gt; throws Exception {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;SessionInfo info = new SessionInfo(connectionInfo, ++idGenerator);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return info;
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected ProducerInfo createProducerInfo(SessionInfo sessionInfo)
&lt;br&gt;&amp;gt; throws Exception {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ProducerInfo info = new ProducerInfo(sessionInfo, ++idGenerator);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return info;
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected ConsumerInfo createConsumerInfo(SessionInfo sessionInfo,
&lt;br&gt;&amp;gt; ActiveMQDestination destination) throws Exception {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ConsumerInfo info = new ConsumerInfo(sessionInfo, ++idGenerator);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;info.setBrowser(false);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;info.setDestination(destination);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;info.setPrefetchSize(1000);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;info.setDispatchAsync(false);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return info;
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected DestinationInfo createTempDestinationInfo(ConnectionInfo
&lt;br&gt;&amp;gt; connectionInfo, byte destinationType) {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;DestinationInfo info = new DestinationInfo();
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;info.setConnectionId(connectionInfo.getConnectionId());
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;info.setOperationType(DestinationInfo.ADD_OPERATION_TYPE);
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; &amp;nbsp;info.setDestination(ActiveMQDestination.createDestination(info.getConnectionId()
&lt;br&gt;&amp;gt; + &amp;quot;:&amp;quot; + (++tempDestGenerator), destinationType));
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return info;
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected ActiveMQDestination createDestinationInfo(StubConnection
&lt;br&gt;&amp;gt; connection, ConnectionInfo connectionInfo1, byte destinationType) throws
&lt;br&gt;&amp;gt; Exception {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if ((destinationType &amp; ActiveMQDestination.TEMP_MASK) != 0) {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;DestinationInfo info =
&lt;br&gt;&amp;gt; createTempDestinationInfo(connectionInfo1, destinationType);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;connection.send(info);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return info.getDestination();
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} else {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return ActiveMQDestination.createDestination(queueName,
&lt;br&gt;&amp;gt; destinationType);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected Message createMessage(ProducerInfo producerInfo,
&lt;br&gt;&amp;gt; ActiveMQDestination destination, int deliveryMode) {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Message message = createMessage(producerInfo, destination);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;message.setPersistent(deliveryMode == DeliveryMode.PERSISTENT);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return message;
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected Message createMessage(ProducerInfo producerInfo,
&lt;br&gt;&amp;gt; ActiveMQDestination destination) {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ActiveMQTextMessage message = new ActiveMQTextMessage();
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;message.setMessageId(new MessageId(producerInfo,
&lt;br&gt;&amp;gt; ++msgIdGenerator));
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;message.setDestination(destination);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;message.setPersistent(false);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;message.setText(&amp;quot;Test Message Payload.&amp;quot;);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (MessageNotWriteableException e) {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return message;
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;protected MessageAck createAck(ConsumerInfo consumerInfo, Message msg,
&lt;br&gt;&amp;gt; int count, byte ackType) {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;MessageAck ack = new MessageAck();
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ack.setAckType(ackType);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ack.setConsumerId(consumerInfo.getConsumerId());
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ack.setDestination(msg.getDestination());
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ack.setLastMessageId(msg.getMessageId());
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ack.setMessageCount(count);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return ack;
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;public Message receiveMessage(StubConnection connection) throws
&lt;br&gt;&amp;gt; InterruptedException {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return receiveMessage(connection, maxWait);
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp;public Message receiveMessage(StubConnection connection, long timeout)
&lt;br&gt;&amp;gt; throws InterruptedException {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;while (true) {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Object o = connection.getDispatchQueue().poll(timeout,
&lt;br&gt;&amp;gt; TimeUnit.MILLISECONDS);
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (o == null) {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return null;
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (o instanceof MessageDispatch) {
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;MessageDispatch dispatch = (MessageDispatch)o;
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (dispatch.getMessage() == null) {
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return null;
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dispatch.setMessage(dispatch.getMessage().copy());
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; &amp;nbsp;dispatch.getMessage().setRedeliveryCounter(dispatch.getRedeliveryCounter());
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return dispatch.getMessage();
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp;}
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;&lt;a href=&quot;http://blog.garytully.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://blog.garytully.com&lt;/a&gt;&lt;br&gt;&lt;br&gt;Open Source Integration
&lt;br&gt;&lt;a href=&quot;http://fusesource.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://fusesource.com&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A-svn-commit%3A-r883411----activemq-trunk-activemq-core-src-test-java-org-apache-activemq-network-BrokerNetworkWithStuckMessagesTest.java-tp26483359p26483359.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26479121</id>
	<title>Re: Are JIRA issue flooding your inbox?</title>
	<published>2009-11-23T06:32:26Z</published>
	<updated>2009-11-23T06:32:26Z</updated>
	<author>
		<name>bsnyder</name>
	</author>
	<content type="html">On Mon, Nov 23, 2009 at 5:19 AM, Hiram Chirino &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26479121&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;hiram@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt; I think a good middle ground is that we time box how long we let an
&lt;br&gt;&amp;gt; issue without a unit test sit around before it's  kicked.  If the
&lt;br&gt;&amp;gt; original reporter or another contributor has not provided a unit test
&lt;br&gt;&amp;gt; in a month, we should close it out.
&lt;br&gt;&lt;br&gt;I agree that we should begin aging issues, especially if they don't
&lt;br&gt;even have steps to reproduce. If they don't even have that, then we
&lt;br&gt;should mark the issue as Can't Reproduce and add a comment encouraging
&lt;br&gt;the user to reopen the issue if they can provide steps to reproduce or
&lt;br&gt;even a test. It really boils down to just staying on top of the issues
&lt;br&gt;as they're opened and taking action to close those that are
&lt;br&gt;insufficient.
&lt;br&gt;&lt;br&gt;Bruce
&lt;br&gt;-- 
&lt;br&gt;perl -e 'print unpack(&amp;quot;u30&amp;quot;,&amp;quot;D0G)U8V4\@4VYY9&amp;5R\&amp;quot;F)R=6-E+G-N&amp;gt;61E&amp;lt;D\!G;6%I;\&amp;quot;YC;VT*&amp;quot;
&lt;br&gt;);'
&lt;br&gt;&lt;br&gt;ActiveMQ in Action: &lt;a href=&quot;http://bit.ly/2je6cQ&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bit.ly/2je6cQ&lt;/a&gt;&lt;br&gt;Blog: &lt;a href=&quot;http://bruceblog.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bruceblog.org/&lt;/a&gt;&lt;br&gt;Twitter: &lt;a href=&quot;http://twitter.com/brucesnyder&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://twitter.com/brucesnyder&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Are-JIRA-issue-flooding-your-inbox--tp26453201p26479121.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26479011</id>
	<title>[jira] Updated: (AMQ-2506) Incorrect activemq-policy.xml in activemq-core tests used and referenced in http://activemq.apache.org/dispatch-policies.html.</title>
	<published>2009-11-23T06:25:53Z</published>
	<updated>2009-11-23T06:25:53Z</updated>
	<author>
		<name>JIRA jira@apache.org</name>
	</author>
	<content type="html">&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;[ &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQ-2506?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQ-2506?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel&lt;/a&gt;&amp;nbsp;]
&lt;br&gt;&lt;br&gt;Torsten Mielke updated AMQ-2506:
&lt;br&gt;--------------------------------
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; Attachment: AMQ-2506.patch
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Incorrect activemq-policy.xml in activemq-core tests used and referenced in &lt;a href=&quot;http://activemq.apache.org/dispatch-policies.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://activemq.apache.org/dispatch-policies.html&lt;/a&gt;.
&lt;br&gt;&amp;gt; ------------------------------------------------------------------------------------------------------------------------------
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Key: AMQ-2506
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; URL: &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQ-2506&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQ-2506&lt;/a&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Project: ActiveMQ
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Issue Type: Bug
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Components: Documentation, Test Cases
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;Affects Versions: 5.3.0
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Reporter: Torsten Mielke
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Priority: Minor
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Attachments: AMQ-2506.patch
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; Original Estimate: 20 minutes
&lt;br&gt;&amp;gt; &amp;nbsp;Remaining Estimate: 20 minutes
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://activemq.apache.org/dispatch-policies.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://activemq.apache.org/dispatch-policies.html&lt;/a&gt;&amp;nbsp;explains the use of dispatch policies and gives an example which is a code snippet taken from activemq/trunk/activemq-core/src/test/resources/org/apache/activemq/xbean/activemq-policy.xml.
&lt;br&gt;&amp;gt; That example is incorrect as it configures a round robin dispatch policy for topics but such policy only really makes sense for queues. 
&lt;/div&gt;&lt;br&gt;-- 
&lt;br&gt;This message is automatically generated by JIRA.
&lt;br&gt;-
&lt;br&gt;You can reply to this email to add a comment to the issue online.
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-jira--Created%3A-%28AMQ-2506%29-Incorrect-activemq-policy.xml-in-activemq-core-tests-used-and-referenced-in-http%3A--activemq.apache.org-dispatch-policies.html.-tp26478978p26479011.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26478978</id>
	<title>[jira] Created: (AMQ-2506) Incorrect activemq-policy.xml in activemq-core tests used and referenced in http://activemq.apache.org/dispatch-policies.html.</title>
	<published>2009-11-23T06:23:52Z</published>
	<updated>2009-11-23T06:23:52Z</updated>
	<author>
		<name>JIRA jira@apache.org</name>
	</author>
	<content type="html">Incorrect activemq-policy.xml in activemq-core tests used and referenced in &lt;a href=&quot;http://activemq.apache.org/dispatch-policies.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://activemq.apache.org/dispatch-policies.html&lt;/a&gt;.
&lt;br&gt;------------------------------------------------------------------------------------------------------------------------------
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Key: AMQ-2506
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;URL: &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQ-2506&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQ-2506&lt;/a&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Project: ActiveMQ
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Issue Type: Bug
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Components: Documentation, Test Cases
&lt;br&gt;&amp;nbsp; &amp;nbsp; Affects Versions: 5.3.0
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Reporter: Torsten Mielke
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Priority: Minor
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://activemq.apache.org/dispatch-policies.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://activemq.apache.org/dispatch-policies.html&lt;/a&gt;&amp;nbsp;explains the use of dispatch policies and gives an example which is a code snippet taken from activemq/trunk/activemq-core/src/test/resources/org/apache/activemq/xbean/activemq-policy.xml.
&lt;br&gt;&lt;br&gt;That example is incorrect as it configures a round robin dispatch policy for topics but such policy only really makes sense for queues. 
&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;This message is automatically generated by JIRA.
&lt;br&gt;-
&lt;br&gt;You can reply to this email to add a comment to the issue online.
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-jira--Created%3A-%28AMQ-2506%29-Incorrect-activemq-policy.xml-in-activemq-core-tests-used-and-referenced-in-http%3A--activemq.apache.org-dispatch-policies.html.-tp26478978p26478978.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26478469</id>
	<title>[jira] Updated: (AMQNET-211) ConnectionInterruptedListener doesnt raise the event when broker network dies in failover mode</title>
	<published>2009-11-23T05:55:52Z</published>
	<updated>2009-11-23T05:55:52Z</updated>
	<author>
		<name>JIRA jira+amqnet@apache.org</name>
	</author>
	<content type="html">&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;[ &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQNET-211?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQNET-211?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel&lt;/a&gt;&amp;nbsp;]
&lt;br&gt;&lt;br&gt;Timothy Bish updated AMQNET-211:
&lt;br&gt;--------------------------------
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; Fix Version/s: 1.3.0
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; ConnectionInterruptedListener doesnt raise the event when broker network dies in failover mode
&lt;br&gt;&amp;gt; ----------------------------------------------------------------------------------------------
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Key: AMQNET-211
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; URL: &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQNET-211&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQNET-211&lt;/a&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Project: ActiveMQ .Net
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Issue Type: Bug
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Components: ActiveMQ, NMS
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;Affects Versions: 1.2.0
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Environment: ActiveMQ 5.3 stable release. tested also with ActiveMQ 5.4 Nightly build
&lt;br&gt;&amp;gt; Apache.NMS 1.2.0.1778
&lt;br&gt;&amp;gt; Apache.NMS.ActiveMQ.dll 1.2.0.1778
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Reporter: Sebastien Rodriguez
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Assignee: Jim Gomes
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Fix For: 1.3.0
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Attachments: activemq.xml
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The problem comes when I set up the following configuration:
&lt;br&gt;&amp;gt; Network of brokers (2 brokers, A and B) in failover mode
&lt;br&gt;&amp;gt; Client written in C# using the Apache.NMS.ActiveMQ client, configured in failover mode. (machine C)
&lt;br&gt;&amp;gt; When stopping manually the service in one computer(A for eg), the switch is done without any problems. C uses B to send the data. The admin console shows he has one consumer.
&lt;br&gt;&amp;gt; Turning the service on and doing the same step in the other computer works great too (the client failovers to the recovered broker again without any problems: C is connected to A now)
&lt;br&gt;&amp;gt; Unplugging the network cable in A does not cause C to switch to B again. Looking at the admin console there are no consumers connected to B.
&lt;br&gt;&amp;gt; Looking the logs of B:
&lt;br&gt;&amp;gt; jvm 1 &amp;nbsp; &amp;nbsp;| &amp;nbsp;WARN | Could not start network bridge between: vm://10.216.1.66 and: tcp://10.216.1.101:61616 due to: java.net.ConnectException: Connection timed out: connect
&lt;br&gt;&amp;gt; This should have raised a ConnectionInterruptedListener event. Logs shoes nothing such happens
&lt;/div&gt;&lt;br&gt;-- 
&lt;br&gt;This message is automatically generated by JIRA.
&lt;br&gt;-
&lt;br&gt;You can reply to this email to add a comment to the issue online.
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-jira--Created%3A-%28AMQNET-211%29-ConnectionInterruptedListener-doesnt-raise-the-event-when-broker-network-dies-in-failover-mode-tp26477059p26478469.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26478294</id>
	<title>[jira] Updated: (AMQNET-212) Add an Inactivity Monitor to the Transports layer to timeout broken connections</title>
	<published>2009-11-23T05:45:52Z</published>
	<updated>2009-11-23T05:45:52Z</updated>
	<author>
		<name>JIRA jira+amqnet@apache.org</name>
	</author>
	<content type="html">&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;[ &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQNET-212?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQNET-212?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel&lt;/a&gt;&amp;nbsp;]
&lt;br&gt;&lt;br&gt;Timothy Bish updated AMQNET-212:
&lt;br&gt;--------------------------------
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; Affects Version/s: &amp;nbsp; &amp;nbsp; (was: 1.3.0)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1.2.0
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Fix Version/s: 1.3.0
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Add an Inactivity Monitor to the Transports layer to timeout broken connections
&lt;br&gt;&amp;gt; -------------------------------------------------------------------------------
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Key: AMQNET-212
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; URL: &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQNET-212&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQNET-212&lt;/a&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Project: ActiveMQ .Net
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Issue Type: Improvement
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Components: ActiveMQ
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;Affects Versions: 1.2.0
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Reporter: Timothy Bish
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Assignee: Timothy Bish
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Fix For: 1.3.0
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; In order to more quickly detect broken connections between client and broker the NMS.AcitveMQ client needs to add an InactivityMonitor transport filter that deals with the keep alive messages that allow for detection of broken sockets. &amp;nbsp;Right now a broken connection such as one that occurs when a cable is pulled isn't detected and the client can sit idle instead of failing over if there's no outbound messages to trigger a failed write.
&lt;/div&gt;&lt;br&gt;-- 
&lt;br&gt;This message is automatically generated by JIRA.
&lt;br&gt;-
&lt;br&gt;You can reply to this email to add a comment to the issue online.
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-jira--Created%3A-%28AMQNET-212%29-Add-an-Inactivity-Monitor-to-the-Transports-layer-to-timeout-broken-connections-tp26478224p26478294.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26478224</id>
	<title>[jira] Created: (AMQNET-212) Add an Inactivity Monitor to the Transports layer to timeout broken connections</title>
	<published>2009-11-23T05:41:52Z</published>
	<updated>2009-11-23T05:41:52Z</updated>
	<author>
		<name>JIRA jira+amqnet@apache.org</name>
	</author>
	<content type="html">Add an Inactivity Monitor to the Transports layer to timeout broken connections
&lt;br&gt;-------------------------------------------------------------------------------
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Key: AMQNET-212
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;URL: &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQNET-212&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQNET-212&lt;/a&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Project: ActiveMQ .Net
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Issue Type: Improvement
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Components: ActiveMQ
&lt;br&gt;&amp;nbsp; &amp;nbsp; Affects Versions: 1.3.0
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Reporter: Timothy Bish
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Assignee: Timothy Bish
&lt;br&gt;&lt;br&gt;&lt;br&gt;In order to more quickly detect broken connections between client and broker the NMS.AcitveMQ client needs to add an InactivityMonitor transport filter that deals with the keep alive messages that allow for detection of broken sockets. &amp;nbsp;Right now a broken connection such as one that occurs when a cable is pulled isn't detected and the client can sit idle instead of failing over if there's no outbound messages to trigger a failed write.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;This message is automatically generated by JIRA.
&lt;br&gt;-
&lt;br&gt;You can reply to this email to add a comment to the issue online.
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-jira--Created%3A-%28AMQNET-212%29-Add-an-Inactivity-Monitor-to-the-Transports-layer-to-timeout-broken-connections-tp26478224p26478224.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26478164</id>
	<title>[jira] Commented: (AMQNET-211) ConnectionInterruptedListener doesnt raise the event when broker network dies in failover mode</title>
	<published>2009-11-23T05:37:54Z</published>
	<updated>2009-11-23T05:37:54Z</updated>
	<author>
		<name>JIRA jira+amqnet@apache.org</name>
	</author>
	<content type="html">&lt;br&gt;&amp;nbsp; &amp;nbsp; [ &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQNET-211?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&amp;focusedCommentId=56024#action_56024&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQNET-211?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&amp;focusedCommentId=56024#action_56024&lt;/a&gt;&amp;nbsp;] 
&lt;br&gt;&lt;br&gt;Timothy Bish commented on AMQNET-211:
&lt;br&gt;-------------------------------------
&lt;br&gt;&lt;br&gt;It can help but it depends on what the OS timing is for the keep alive. &amp;nbsp;
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; ConnectionInterruptedListener doesnt raise the event when broker network dies in failover mode
&lt;br&gt;&amp;gt; ----------------------------------------------------------------------------------------------
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Key: AMQNET-211
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; URL: &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQNET-211&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQNET-211&lt;/a&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Project: ActiveMQ .Net
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Issue Type: Bug
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Components: ActiveMQ, NMS
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;Affects Versions: 1.2.0
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Environment: ActiveMQ 5.3 stable release. tested also with ActiveMQ 5.4 Nightly build
&lt;br&gt;&amp;gt; Apache.NMS 1.2.0.1778
&lt;br&gt;&amp;gt; Apache.NMS.ActiveMQ.dll 1.2.0.1778
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Reporter: Sebastien Rodriguez
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Assignee: Jim Gomes
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Attachments: activemq.xml
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The problem comes when I set up the following configuration:
&lt;br&gt;&amp;gt; Network of brokers (2 brokers, A and B) in failover mode
&lt;br&gt;&amp;gt; Client written in C# using the Apache.NMS.ActiveMQ client, configured in failover mode. (machine C)
&lt;br&gt;&amp;gt; When stopping manually the service in one computer(A for eg), the switch is done without any problems. C uses B to send the data. The admin console shows he has one consumer.
&lt;br&gt;&amp;gt; Turning the service on and doing the same step in the other computer works great too (the client failovers to the recovered broker again without any problems: C is connected to A now)
&lt;br&gt;&amp;gt; Unplugging the network cable in A does not cause C to switch to B again. Looking at the admin console there are no consumers connected to B.
&lt;br&gt;&amp;gt; Looking the logs of B:
&lt;br&gt;&amp;gt; jvm 1 &amp;nbsp; &amp;nbsp;| &amp;nbsp;WARN | Could not start network bridge between: vm://10.216.1.66 and: tcp://10.216.1.101:61616 due to: java.net.ConnectException: Connection timed out: connect
&lt;br&gt;&amp;gt; This should have raised a ConnectionInterruptedListener event. Logs shoes nothing such happens
&lt;/div&gt;&lt;br&gt;-- 
&lt;br&gt;This message is automatically generated by JIRA.
&lt;br&gt;-
&lt;br&gt;You can reply to this email to add a comment to the issue online.
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-jira--Created%3A-%28AMQNET-211%29-ConnectionInterruptedListener-doesnt-raise-the-event-when-broker-network-dies-in-failover-mode-tp26477059p26478164.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26478062</id>
	<title>[jira] Commented: (AMQNET-211) ConnectionInterruptedListener doesnt raise the event when broker network dies in failover mode</title>
	<published>2009-11-23T05:29:52Z</published>
	<updated>2009-11-23T05:29:52Z</updated>
	<author>
		<name>JIRA jira+amqnet@apache.org</name>
	</author>
	<content type="html">&lt;br&gt;&amp;nbsp; &amp;nbsp; [ &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQNET-211?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&amp;focusedCommentId=56023#action_56023&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQNET-211?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&amp;focusedCommentId=56023#action_56023&lt;/a&gt;&amp;nbsp;] 
&lt;br&gt;&lt;br&gt;Sebastien Rodriguez commented on AMQNET-211:
&lt;br&gt;--------------------------------------------
&lt;br&gt;&lt;br&gt;Could soKeepAlive option on the connection URI help to switch over connection to the failover URI, in case of a cable unplug?
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; ConnectionInterruptedListener doesnt raise the event when broker network dies in failover mode
&lt;br&gt;&amp;gt; ----------------------------------------------------------------------------------------------
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Key: AMQNET-211
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; URL: &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQNET-211&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQNET-211&lt;/a&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Project: ActiveMQ .Net
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Issue Type: Bug
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Components: ActiveMQ, NMS
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;Affects Versions: 1.2.0
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Environment: ActiveMQ 5.3 stable release. tested also with ActiveMQ 5.4 Nightly build
&lt;br&gt;&amp;gt; Apache.NMS 1.2.0.1778
&lt;br&gt;&amp;gt; Apache.NMS.ActiveMQ.dll 1.2.0.1778
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Reporter: Sebastien Rodriguez
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Assignee: Jim Gomes
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Attachments: activemq.xml
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The problem comes when I set up the following configuration:
&lt;br&gt;&amp;gt; Network of brokers (2 brokers, A and B) in failover mode
&lt;br&gt;&amp;gt; Client written in C# using the Apache.NMS.ActiveMQ client, configured in failover mode. (machine C)
&lt;br&gt;&amp;gt; When stopping manually the service in one computer(A for eg), the switch is done without any problems. C uses B to send the data. The admin console shows he has one consumer.
&lt;br&gt;&amp;gt; Turning the service on and doing the same step in the other computer works great too (the client failovers to the recovered broker again without any problems: C is connected to A now)
&lt;br&gt;&amp;gt; Unplugging the network cable in A does not cause C to switch to B again. Looking at the admin console there are no consumers connected to B.
&lt;br&gt;&amp;gt; Looking the logs of B:
&lt;br&gt;&amp;gt; jvm 1 &amp;nbsp; &amp;nbsp;| &amp;nbsp;WARN | Could not start network bridge between: vm://10.216.1.66 and: tcp://10.216.1.101:61616 due to: java.net.ConnectException: Connection timed out: connect
&lt;br&gt;&amp;gt; This should have raised a ConnectionInterruptedListener event. Logs shoes nothing such happens
&lt;/div&gt;&lt;br&gt;-- 
&lt;br&gt;This message is automatically generated by JIRA.
&lt;br&gt;-
&lt;br&gt;You can reply to this email to add a comment to the issue online.
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-jira--Created%3A-%28AMQNET-211%29-ConnectionInterruptedListener-doesnt-raise-the-event-when-broker-network-dies-in-failover-mode-tp26477059p26478062.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26477973</id>
	<title>[jira] Commented: (AMQNET-211) ConnectionInterruptedListener doesnt raise the event when broker network dies in failover mode</title>
	<published>2009-11-23T05:23:54Z</published>
	<updated>2009-11-23T05:23:54Z</updated>
	<author>
		<name>JIRA jira+amqnet@apache.org</name>
	</author>
	<content type="html">&lt;br&gt;&amp;nbsp; &amp;nbsp; [ &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQNET-211?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&amp;focusedCommentId=56022#action_56022&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQNET-211?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&amp;focusedCommentId=56022#action_56022&lt;/a&gt;&amp;nbsp;] 
&lt;br&gt;&lt;br&gt;Timothy Bish commented on AMQNET-211:
&lt;br&gt;-------------------------------------
&lt;br&gt;&lt;br&gt;Ok, this is working as I'd expect then. &amp;nbsp;The NMS.ActiveMQ implementation currently doesn't have an inactivity monitor so there's no active ping of the connection from the client so in the case of the network plug being pulled you are essentially waiting for the OS to timeout the socket, this can take up to an hour depending on the OS and the TCP/IP config. &amp;nbsp;
&lt;br&gt;&lt;br&gt;Adding an inactivity monitor is on my TODO list but I'm not sure it will make it into the 1.2.0 release, we are planning on cutting release candidates for that this week.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; ConnectionInterruptedListener doesnt raise the event when broker network dies in failover mode
&lt;br&gt;&amp;gt; ----------------------------------------------------------------------------------------------
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Key: AMQNET-211
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; URL: &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQNET-211&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQNET-211&lt;/a&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Project: ActiveMQ .Net
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Issue Type: Bug
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Components: ActiveMQ, NMS
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;Affects Versions: 1.2.0
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Environment: ActiveMQ 5.3 stable release. tested also with ActiveMQ 5.4 Nightly build
&lt;br&gt;&amp;gt; Apache.NMS 1.2.0.1778
&lt;br&gt;&amp;gt; Apache.NMS.ActiveMQ.dll 1.2.0.1778
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Reporter: Sebastien Rodriguez
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Assignee: Jim Gomes
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Attachments: activemq.xml
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The problem comes when I set up the following configuration:
&lt;br&gt;&amp;gt; Network of brokers (2 brokers, A and B) in failover mode
&lt;br&gt;&amp;gt; Client written in C# using the Apache.NMS.ActiveMQ client, configured in failover mode. (machine C)
&lt;br&gt;&amp;gt; When stopping manually the service in one computer(A for eg), the switch is done without any problems. C uses B to send the data. The admin console shows he has one consumer.
&lt;br&gt;&amp;gt; Turning the service on and doing the same step in the other computer works great too (the client failovers to the recovered broker again without any problems: C is connected to A now)
&lt;br&gt;&amp;gt; Unplugging the network cable in A does not cause C to switch to B again. Looking at the admin console there are no consumers connected to B.
&lt;br&gt;&amp;gt; Looking the logs of B:
&lt;br&gt;&amp;gt; jvm 1 &amp;nbsp; &amp;nbsp;| &amp;nbsp;WARN | Could not start network bridge between: vm://10.216.1.66 and: tcp://10.216.1.101:61616 due to: java.net.ConnectException: Connection timed out: connect
&lt;br&gt;&amp;gt; This should have raised a ConnectionInterruptedListener event. Logs shoes nothing such happens
&lt;/div&gt;&lt;br&gt;-- 
&lt;br&gt;This message is automatically generated by JIRA.
&lt;br&gt;-
&lt;br&gt;You can reply to this email to add a comment to the issue online.
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-jira--Created%3A-%28AMQNET-211%29-ConnectionInterruptedListener-doesnt-raise-the-event-when-broker-network-dies-in-failover-mode-tp26477059p26477973.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26477878</id>
	<title>[jira] Commented: (AMQNET-211) ConnectionInterruptedListener doesnt raise the event when broker network dies in failover mode</title>
	<published>2009-11-23T05:17:52Z</published>
	<updated>2009-11-23T05:17:52Z</updated>
	<author>
		<name>JIRA jira+amqnet@apache.org</name>
	</author>
	<content type="html">&lt;br&gt;&amp;nbsp; &amp;nbsp; [ &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQNET-211?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&amp;focusedCommentId=56021#action_56021&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQNET-211?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&amp;focusedCommentId=56021#action_56021&lt;/a&gt;&amp;nbsp;] 
&lt;br&gt;&lt;br&gt;Sebastien Rodriguez commented on AMQNET-211:
&lt;br&gt;--------------------------------------------
&lt;br&gt;&lt;br&gt;Yes, this happens when unplugging the network cable from the broker used by the client in the network of brokers.
&lt;br&gt;The failover works great when shut downing the broker
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; ConnectionInterruptedListener doesnt raise the event when broker network dies in failover mode
&lt;br&gt;&amp;gt; ----------------------------------------------------------------------------------------------
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Key: AMQNET-211
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; URL: &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQNET-211&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQNET-211&lt;/a&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Project: ActiveMQ .Net
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Issue Type: Bug
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Components: ActiveMQ, NMS
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;Affects Versions: 1.2.0
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Environment: ActiveMQ 5.3 stable release. tested also with ActiveMQ 5.4 Nightly build
&lt;br&gt;&amp;gt; Apache.NMS 1.2.0.1778
&lt;br&gt;&amp;gt; Apache.NMS.ActiveMQ.dll 1.2.0.1778
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Reporter: Sebastien Rodriguez
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Assignee: Jim Gomes
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Attachments: activemq.xml
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The problem comes when I set up the following configuration:
&lt;br&gt;&amp;gt; Network of brokers (2 brokers, A and B) in failover mode
&lt;br&gt;&amp;gt; Client written in C# using the Apache.NMS.ActiveMQ client, configured in failover mode. (machine C)
&lt;br&gt;&amp;gt; When stopping manually the service in one computer(A for eg), the switch is done without any problems. C uses B to send the data. The admin console shows he has one consumer.
&lt;br&gt;&amp;gt; Turning the service on and doing the same step in the other computer works great too (the client failovers to the recovered broker again without any problems: C is connected to A now)
&lt;br&gt;&amp;gt; Unplugging the network cable in A does not cause C to switch to B again. Looking at the admin console there are no consumers connected to B.
&lt;br&gt;&amp;gt; Looking the logs of B:
&lt;br&gt;&amp;gt; jvm 1 &amp;nbsp; &amp;nbsp;| &amp;nbsp;WARN | Could not start network bridge between: vm://10.216.1.66 and: tcp://10.216.1.101:61616 due to: java.net.ConnectException: Connection timed out: connect
&lt;br&gt;&amp;gt; This should have raised a ConnectionInterruptedListener event. Logs shoes nothing such happens
&lt;/div&gt;&lt;br&gt;-- 
&lt;br&gt;This message is automatically generated by JIRA.
&lt;br&gt;-
&lt;br&gt;You can reply to this email to add a comment to the issue online.
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-jira--Created%3A-%28AMQNET-211%29-ConnectionInterruptedListener-doesnt-raise-the-event-when-broker-network-dies-in-failover-mode-tp26477059p26477878.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26477819</id>
	<title>[jira] Commented: (AMQNET-211) ConnectionInterruptedListener doesnt raise the event when broker network dies in failover mode</title>
	<published>2009-11-23T05:13:52Z</published>
	<updated>2009-11-23T05:13:52Z</updated>
	<author>
		<name>JIRA jira+amqnet@apache.org</name>
	</author>
	<content type="html">&lt;br&gt;&amp;nbsp; &amp;nbsp; [ &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQNET-211?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&amp;focusedCommentId=56020#action_56020&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQNET-211?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&amp;focusedCommentId=56020#action_56020&lt;/a&gt;&amp;nbsp;] 
&lt;br&gt;&lt;br&gt;Timothy Bish commented on AMQNET-211:
&lt;br&gt;-------------------------------------
&lt;br&gt;&lt;br&gt;So this only happens when you pull the network plug, but works fine when you shutdown a broker? &amp;nbsp;It should like a symptom of not having an inactivity monitor yet in NMS.ActiveMQ. &amp;nbsp;
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; ConnectionInterruptedListener doesnt raise the event when broker network dies in failover mode
&lt;br&gt;&amp;gt; ----------------------------------------------------------------------------------------------
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Key: AMQNET-211
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; URL: &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQNET-211&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQNET-211&lt;/a&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Project: ActiveMQ .Net
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Issue Type: Bug
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Components: ActiveMQ, NMS
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;Affects Versions: 1.2.0
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Environment: ActiveMQ 5.3 stable release. tested also with ActiveMQ 5.4 Nightly build
&lt;br&gt;&amp;gt; Apache.NMS 1.2.0.1778
&lt;br&gt;&amp;gt; Apache.NMS.ActiveMQ.dll 1.2.0.1778
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Reporter: Sebastien Rodriguez
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Assignee: Jim Gomes
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Attachments: activemq.xml
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The problem comes when I set up the following configuration:
&lt;br&gt;&amp;gt; Network of brokers (2 brokers, A and B) in failover mode
&lt;br&gt;&amp;gt; Client written in C# using the Apache.NMS.ActiveMQ client, configured in failover mode. (machine C)
&lt;br&gt;&amp;gt; When stopping manually the service in one computer(A for eg), the switch is done without any problems. C uses B to send the data. The admin console shows he has one consumer.
&lt;br&gt;&amp;gt; Turning the service on and doing the same step in the other computer works great too (the client failovers to the recovered broker again without any problems: C is connected to A now)
&lt;br&gt;&amp;gt; Unplugging the network cable in A does not cause C to switch to B again. Looking at the admin console there are no consumers connected to B.
&lt;br&gt;&amp;gt; Looking the logs of B:
&lt;br&gt;&amp;gt; jvm 1 &amp;nbsp; &amp;nbsp;| &amp;nbsp;WARN | Could not start network bridge between: vm://10.216.1.66 and: tcp://10.216.1.101:61616 due to: java.net.ConnectException: Connection timed out: connect
&lt;br&gt;&amp;gt; This should have raised a ConnectionInterruptedListener event. Logs shoes nothing such happens
&lt;/div&gt;&lt;br&gt;-- 
&lt;br&gt;This message is automatically generated by JIRA.
&lt;br&gt;-
&lt;br&gt;You can reply to this email to add a comment to the issue online.
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-jira--Created%3A-%28AMQNET-211%29-ConnectionInterruptedListener-doesnt-raise-the-event-when-broker-network-dies-in-failover-mode-tp26477059p26477819.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26477086</id>
	<title>[jira] Updated: (AMQNET-211) ConnectionInterruptedListener doesnt raise the event when broker network dies in failover mode</title>
	<published>2009-11-23T04:19:52Z</published>
	<updated>2009-11-23T04:19:52Z</updated>
	<author>
		<name>JIRA jira+amqnet@apache.org</name>
	</author>
	<content type="html">&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;[ &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQNET-211?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQNET-211?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel&lt;/a&gt;&amp;nbsp;]
&lt;br&gt;&lt;br&gt;Sebastien Rodriguez updated AMQNET-211:
&lt;br&gt;---------------------------------------
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; Attachment: activemq.xml
&lt;br&gt;&lt;br&gt;ActiveMQ configuration file
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; ConnectionInterruptedListener doesnt raise the event when broker network dies in failover mode
&lt;br&gt;&amp;gt; ----------------------------------------------------------------------------------------------
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Key: AMQNET-211
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; URL: &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQNET-211&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQNET-211&lt;/a&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Project: ActiveMQ .Net
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Issue Type: Bug
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Components: ActiveMQ, NMS
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;Affects Versions: 1.2.0
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Environment: ActiveMQ 5.3 stable release. tested also with ActiveMQ 5.4 Nightly build
&lt;br&gt;&amp;gt; Apache.NMS 1.2.0.1778
&lt;br&gt;&amp;gt; Apache.NMS.ActiveMQ.dll 1.2.0.1778
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Reporter: Sebastien Rodriguez
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Assignee: Jim Gomes
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Attachments: activemq.xml
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The problem comes when I set up the following configuration:
&lt;br&gt;&amp;gt; Network of brokers (2 brokers, A and B) in failover mode
&lt;br&gt;&amp;gt; Client written in C# using the Apache.NMS.ActiveMQ client, configured in failover mode. (machine C)
&lt;br&gt;&amp;gt; When stopping manually the service in one computer(A for eg), the switch is done without any problems. C uses B to send the data. The admin console shows he has one consumer.
&lt;br&gt;&amp;gt; Turning the service on and doing the same step in the other computer works great too (the client failovers to the recovered broker again without any problems: C is connected to A now)
&lt;br&gt;&amp;gt; Unplugging the network cable in A does not cause C to switch to B again. Looking at the admin console there are no consumers connected to B.
&lt;br&gt;&amp;gt; Looking the logs of B:
&lt;br&gt;&amp;gt; jvm 1 &amp;nbsp; &amp;nbsp;| &amp;nbsp;WARN | Could not start network bridge between: vm://10.216.1.66 and: tcp://10.216.1.101:61616 due to: java.net.ConnectException: Connection timed out: connect
&lt;br&gt;&amp;gt; This should have raised a ConnectionInterruptedListener event. Logs shoes nothing such happens
&lt;/div&gt;&lt;br&gt;-- 
&lt;br&gt;This message is automatically generated by JIRA.
&lt;br&gt;-
&lt;br&gt;You can reply to this email to add a comment to the issue online.
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-jira--Created%3A-%28AMQNET-211%29-ConnectionInterruptedListener-doesnt-raise-the-event-when-broker-network-dies-in-failover-mode-tp26477059p26477086.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26477081</id>
	<title>Re: Are JIRA issue flooding your inbox?</title>
	<published>2009-11-23T04:19:26Z</published>
	<updated>2009-11-23T04:19:26Z</updated>
	<author>
		<name>Hiram Chirino</name>
	</author>
	<content type="html">I think a good middle ground is that we time box how long we let an
&lt;br&gt;issue without a unit test sit around before it's &amp;nbsp;kicked. &amp;nbsp;If the
&lt;br&gt;original reporter or another contributor has not provided a unit test
&lt;br&gt;in a month, we should close it out.
&lt;br&gt;&lt;br&gt;On Sat, Nov 21, 2009 at 11:32 AM, Bruce Snyder &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26477081&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;bruce.snyder@...&lt;/a&gt;&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Sat, Nov 21, 2009 at 12:38 AM, Rob Davies &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26477081&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;rajdavies@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt; I attempt weeding every few months - trouble is - its a jungle ;)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Agreed, which is why I'm trying to get everyone to look at a few. Then
&lt;br&gt;&amp;gt; we can move on to the 5.4.0 issues using the same scrutiny.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; A lot of
&lt;br&gt;&amp;gt;&amp;gt; the unresolved issues will take a lot of time to validate - as they do have
&lt;br&gt;&amp;gt;&amp;gt; steps to reproduce - but they aren't junit tests
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; HIram and I talked about that briefly. We agreed that we need to be
&lt;br&gt;&amp;gt; more strict about this. Hiram is in favor of kicking any issue that
&lt;br&gt;&amp;gt; doesn't have a test. I wouldn't go that far, my threshold is a
&lt;br&gt;&amp;gt; requirement of steps to reproduce. So if neither of those are
&lt;br&gt;&amp;gt; available, and the issue seems sufficiently unclear, just kick it.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Can you make the filter public btw ? I can't see it
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Sorry about that, it's now shared.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Bruce
&lt;br&gt;&amp;gt; --
&lt;br&gt;&amp;gt; perl -e 'print unpack(&amp;quot;u30&amp;quot;,&amp;quot;D0G)U8V4\@4VYY9&amp;5R\&amp;quot;F)R=6-E+G-N&amp;gt;61E&amp;lt;D\!G;6%I;\&amp;quot;YC;VT*&amp;quot;
&lt;br&gt;&amp;gt; );'
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; ActiveMQ in Action: &lt;a href=&quot;http://bit.ly/2je6cQ&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bit.ly/2je6cQ&lt;/a&gt;&lt;br&gt;&amp;gt; Blog: &lt;a href=&quot;http://bruceblog.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bruceblog.org/&lt;/a&gt;&lt;br&gt;&amp;gt; Twitter: &lt;a href=&quot;http://twitter.com/brucesnyder&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://twitter.com/brucesnyder&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Regards,
&lt;br&gt;Hiram
&lt;br&gt;&lt;br&gt;Blog: &lt;a href=&quot;http://hiramchirino.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hiramchirino.com&lt;/a&gt;&lt;br&gt;&lt;br&gt;Open Source SOA
&lt;br&gt;&lt;a href=&quot;http://fusesource.com/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://fusesource.com/&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Are-JIRA-issue-flooding-your-inbox--tp26453201p26477081.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26477058</id>
	<title>[jira] Updated: (AMQNET-211) ConnectionInterruptedListener doesnt raise the event when broker network dies in failover mode</title>
	<published>2009-11-23T04:17:56Z</published>
	<updated>2009-11-23T04:17:56Z</updated>
	<author>
		<name>JIRA jira+amqnet@apache.org</name>
	</author>
	<content type="html">&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;[ &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQNET-211?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQNET-211?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel&lt;/a&gt;&amp;nbsp;]
&lt;br&gt;&lt;br&gt;Sebastien Rodriguez updated AMQNET-211:
&lt;br&gt;---------------------------------------
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; Affects Version/s: &amp;nbsp; &amp;nbsp; (was: 1.3.0)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1.2.0
&lt;br&gt;&lt;br&gt;error in the NMS client version
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; ConnectionInterruptedListener doesnt raise the event when broker network dies in failover mode
&lt;br&gt;&amp;gt; ----------------------------------------------------------------------------------------------
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Key: AMQNET-211
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; URL: &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQNET-211&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQNET-211&lt;/a&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Project: ActiveMQ .Net
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Issue Type: Bug
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Components: ActiveMQ, NMS
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;Affects Versions: 1.2.0
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Environment: ActiveMQ 5.3 stable release. tested also with ActiveMQ 5.4 Nightly build
&lt;br&gt;&amp;gt; Apache.NMS 1.2.0.1778
&lt;br&gt;&amp;gt; Apache.NMS.ActiveMQ.dll 1.2.0.1778
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Reporter: Sebastien Rodriguez
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Assignee: Jim Gomes
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The problem comes when I set up the following configuration:
&lt;br&gt;&amp;gt; Network of brokers (2 brokers, A and B) in failover mode
&lt;br&gt;&amp;gt; Client written in C# using the Apache.NMS.ActiveMQ client, configured in failover mode. (machine C)
&lt;br&gt;&amp;gt; When stopping manually the service in one computer(A for eg), the switch is done without any problems. C uses B to send the data. The admin console shows he has one consumer.
&lt;br&gt;&amp;gt; Turning the service on and doing the same step in the other computer works great too (the client failovers to the recovered broker again without any problems: C is connected to A now)
&lt;br&gt;&amp;gt; Unplugging the network cable in A does not cause C to switch to B again. Looking at the admin console there are no consumers connected to B.
&lt;br&gt;&amp;gt; Looking the logs of B:
&lt;br&gt;&amp;gt; jvm 1 &amp;nbsp; &amp;nbsp;| &amp;nbsp;WARN | Could not start network bridge between: vm://10.216.1.66 and: tcp://10.216.1.101:61616 due to: java.net.ConnectException: Connection timed out: connect
&lt;br&gt;&amp;gt; This should have raised a ConnectionInterruptedListener event. Logs shoes nothing such happens
&lt;/div&gt;&lt;br&gt;-- 
&lt;br&gt;This message is automatically generated by JIRA.
&lt;br&gt;-
&lt;br&gt;You can reply to this email to add a comment to the issue online.
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-jira--Created%3A-%28AMQNET-211%29-ConnectionInterruptedListener-doesnt-raise-the-event-when-broker-network-dies-in-failover-mode-tp26477059p26477058.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26477059</id>
	<title>[jira] Created: (AMQNET-211) ConnectionInterruptedListener doesnt raise the event when broker network dies in failover mode</title>
	<published>2009-11-23T04:17:56Z</published>
	<updated>2009-11-23T04:17:56Z</updated>
	<author>
		<name>JIRA jira+amqnet@apache.org</name>
	</author>
	<content type="html">ConnectionInterruptedListener doesnt raise the event when broker network dies in failover mode
&lt;br&gt;----------------------------------------------------------------------------------------------
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Key: AMQNET-211
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;URL: &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQNET-211&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQNET-211&lt;/a&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Project: ActiveMQ .Net
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Issue Type: Bug
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Components: ActiveMQ, NMS
&lt;br&gt;&amp;nbsp; &amp;nbsp; Affects Versions: 1.3.0
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Environment: ActiveMQ 5.3 stable release. tested also with ActiveMQ 5.4 Nightly build
&lt;br&gt;Apache.NMS 1.2.0.1778
&lt;br&gt;Apache.NMS.ActiveMQ.dll 1.2.0.1778
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Reporter: Sebastien Rodriguez
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Assignee: Jim Gomes
&lt;br&gt;&lt;br&gt;&lt;br&gt;The problem comes when I set up the following configuration:
&lt;br&gt;Network of brokers (2 brokers, A and B) in failover mode
&lt;br&gt;Client written in C# using the Apache.NMS.ActiveMQ client, configured in failover mode. (machine C)
&lt;br&gt;&lt;br&gt;When stopping manually the service in one computer(A for eg), the switch is done without any problems. C uses B to send the data. The admin console shows he has one consumer.
&lt;br&gt;Turning the service on and doing the same step in the other computer works great too (the client failovers to the recovered broker again without any problems: C is connected to A now)
&lt;br&gt;Unplugging the network cable in A does not cause C to switch to B again. Looking at the admin console there are no consumers connected to B.
&lt;br&gt;&lt;br&gt;Looking the logs of B:
&lt;br&gt;jvm 1 &amp;nbsp; &amp;nbsp;| &amp;nbsp;WARN | Could not start network bridge between: vm://10.216.1.66 and: tcp://10.216.1.101:61616 due to: java.net.ConnectException: Connection timed out: connect
&lt;br&gt;&lt;br&gt;This should have raised a ConnectionInterruptedListener event. Logs shoes nothing such happens
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;This message is automatically generated by JIRA.
&lt;br&gt;-
&lt;br&gt;You can reply to this email to add a comment to the issue online.
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-jira--Created%3A-%28AMQNET-211%29-ConnectionInterruptedListener-doesnt-raise-the-event-when-broker-network-dies-in-failover-mode-tp26477059p26477059.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26475918</id>
	<title>[jira] Created: (AMQ-2505) Problem with servicing broker messages when client hostName contains &quot;language specific&quot; characters (org.apache.activemq.util.IdGenerator problem)</title>
	<published>2009-11-23T02:53:52Z</published>
	<updated>2009-11-23T02:53:52Z</updated>
	<author>
		<name>JIRA jira@apache.org</name>
	</author>
	<content type="html">Problem with servicing broker messages when client hostName contains &amp;quot;language specific&amp;quot; characters (org.apache.activemq.util.IdGenerator problem)
&lt;br&gt;--------------------------------------------------------------------------------------------------------------------------------------------------
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Key: AMQ-2505
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;URL: &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQ-2505&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQ-2505&lt;/a&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Project: ActiveMQ
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Issue Type: Bug
&lt;br&gt;&amp;nbsp; &amp;nbsp; Affects Versions: 5.2.0
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Environment: Windows XP SP2
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Reporter: Pawel Sniezek
&lt;br&gt;&lt;br&gt;&lt;br&gt;When name of the activeMQ client machine contains &amp;quot;language specific&amp;quot; letters (e.g. &amp;quot;Gł_Ksiegowa&amp;quot;) communication fails:
&lt;br&gt;&amp;quot;Caused by: java.io.IOException: Failed to broker message: ID:Gł_Ksiegowa-1407-1256558735734-0:2:3:1:1 in container: java.io.UTFDataFormatException: bad string &amp;quot;
&lt;br&gt;&lt;br&gt;To resolve the problem in our system we've changed org.apache.activemq.util.IdGenerator code - we replaced line:
&lt;br&gt;&lt;br&gt;&amp;quot;hostName = InetAddress.getLocalHost().getHostName();&amp;quot;
&lt;br&gt;&lt;br&gt;with:
&lt;br&gt;&lt;br&gt;&amp;quot;hostName = InetAddress.getLocalHost().getHostAddress();&amp;quot;
&lt;br&gt;&lt;br&gt;The whole exception below:
&lt;br&gt;&lt;br&gt;ERROR 2009-10-26 13:07:30,781 [AWT-EventQueue-0] - Local JMS transaction failed to commit; nested exception is javax.jms.JMSException: POST COMMIT FAILED 
&lt;br&gt;org.springframework.jms.connection.SynchedLocalTransactionFailedException: Local JMS transaction failed to commit; nested exception is javax.jms.JMSException: POST COMMIT FAILED 
&lt;br&gt;at org.springframework.jms.connection.ConnectionFactoryUtils$JmsResourceSynchronization.processResourceAfterCommit(ConnectionFactoryUtils.java:408) 
&lt;br&gt;at org.springframework.transaction.support.ResourceHolderSynchronization.afterCommit(ResourceHolderSynchronization.java:74) 
&lt;br&gt;at org.springframework.transaction.support.TransactionSynchronizationUtils.invokeAfterCommit(TransactionSynchronizationUtils.java:114) 
&lt;br&gt;at org.springframework.transaction.support.TransactionSynchronizationUtils.triggerAfterCommit(TransactionSynchronizationUtils.java:100) 
&lt;br&gt;at org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerAfterCommit(AbstractPlatformTransactionManager.java:931) 
&lt;br&gt;at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:774) 
&lt;br&gt;at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:701) 
&lt;br&gt;at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:321) 
&lt;br&gt;at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:116) 
&lt;br&gt;at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) 
&lt;br&gt;at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:635) 
&lt;br&gt;at info.fingo.asist.gui.controls.periodslist.status.ReportStatusHelper$$EnhancerByCGLIB$$2dab363.changeReportsStatus(&amp;lt;generated&amp;gt;) 
&lt;br&gt;at info.fingo.asist.action.ChangeReportStatusAction.asistActionPerformed(ChangeReportStatusAction.java:30) 
&lt;br&gt;at info.fingo.asist.action.MultiReportAction.asistActionPerformed(MultiReportAction.java:80) 
&lt;br&gt;at info.fingo.asist.action.AsistAction.fireAsistActionPerformed(AsistAction.java:297) 
&lt;br&gt;at info.fingo.asist.action.AsistAction.actionPerformed(AsistAction.java:322) 
&lt;br&gt;at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) 
&lt;br&gt;at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) 
&lt;br&gt;at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) 
&lt;br&gt;at javax.swing.DefaultButtonModel.setPressed(Unknown Source) 
&lt;br&gt;at javax.swing.AbstractButton.doClick(Unknown Source) 
&lt;br&gt;at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source) 
&lt;br&gt;at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source) 
&lt;br&gt;at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source) 
&lt;br&gt;at java.awt.Component.processMouseEvent(Unknown Source) 
&lt;br&gt;at javax.swing.JComponent.processMouseEvent(Unknown Source) 
&lt;br&gt;at java.awt.Component.processEvent(Unknown Source) 
&lt;br&gt;at java.awt.Container.processEvent(Unknown Source) 
&lt;br&gt;at java.awt.Component.dispatchEventImpl(Unknown Source) 
&lt;br&gt;at java.awt.Container.dispatchEventImpl(Unknown Source) 
&lt;br&gt;at java.awt.Component.dispatchEvent(Unknown Source) 
&lt;br&gt;at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) 
&lt;br&gt;at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) 
&lt;br&gt;at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) 
&lt;br&gt;at java.awt.Container.dispatchEventImpl(Unknown Source) 
&lt;br&gt;at java.awt.Window.dispatchEventImpl(Unknown Source) 
&lt;br&gt;at java.awt.Component.dispatchEvent(Unknown Source) 
&lt;br&gt;at java.awt.EventQueue.dispatchEvent(Unknown Source) 
&lt;br&gt;at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
&lt;br&gt;at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
&lt;br&gt;at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) 
&lt;br&gt;at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
&lt;br&gt;at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
&lt;br&gt;at java.awt.EventDispatchThread.run(Unknown Source) 
&lt;br&gt;Caused by: javax.jms.JMSException: POST COMMIT FAILED 
&lt;br&gt;at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:49) 
&lt;br&gt;at org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1244) 
&lt;br&gt;at org.apache.activemq.TransactionContext.commit(TransactionContext.java:263) 
&lt;br&gt;at org.apache.activemq.ActiveMQSession.commit(ActiveMQSession.java:502) 
&lt;br&gt;at org.springframework.jms.connection.JmsResourceHolder.commitAll(JmsResourceHolder.java:182) 
&lt;br&gt;at org.springframework.jms.connection.ConnectionFactoryUtils$JmsResourceSynchronization.processResourceAfterCommit(ConnectionFactoryUtils.java:405) 
&lt;br&gt;... 43 more 
&lt;br&gt;Caused by: javax.transaction.xa.XAException: POST COMMIT FAILED 
&lt;br&gt;at org.apache.activemq.transaction.LocalTransaction.commit(LocalTransaction.java:77) 
&lt;br&gt;at org.apache.activemq.broker.TransactionBroker.commitTransaction(TransactionBroker.java:154) 
&lt;br&gt;at org.apache.activemq.broker.BrokerFilter.commitTransaction(BrokerFilter.java:94) 
&lt;br&gt;at org.apache.activemq.broker.BrokerFilter.commitTransaction(BrokerFilter.java:94) 
&lt;br&gt;at org.apache.activemq.broker.MutableBrokerFilter.commitTransaction(MutableBrokerFilter.java:104) 
&lt;br&gt;at org.apache.activemq.broker.TransportConnection.processCommitTransactionOnePhase(TransportConnection.java:424) 
&lt;br&gt;at org.apache.activemq.command.TransactionInfo.visit(TransactionInfo.java:99) 
&lt;br&gt;at org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:294) 
&lt;br&gt;at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:185) 
&lt;br&gt;at org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:65) 
&lt;br&gt;at org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:133) 
&lt;br&gt;at org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:122) 
&lt;br&gt;at org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:84) 
&lt;br&gt;at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:137) 
&lt;br&gt;at java.lang.Thread.run(Unknown Source) 
&lt;br&gt;Caused by: java.lang.RuntimeException: java.io.IOException: Failed to broker message: ID:Gł_Ksiegowa-1407-1256558735734-0:2:3:1:1 in container: java.io.UTFDataFormatException: bad string 
&lt;br&gt;at org.apache.activemq.broker.region.IndirectMessageReference.incrementReferenceCount(IndirectMessageReference.java:103) 
&lt;br&gt;at org.apache.activemq.broker.region.QueueSubscription.dispatch(QueueSubscription.java:170) 
&lt;br&gt;at org.apache.activemq.broker.region.PrefetchSubscription.add(PrefetchSubscription.java:129) 
&lt;br&gt;at org.apache.activemq.broker.region.policy.RoundRobinDispatchPolicy.dispatch(RoundRobinDispatchPolicy.java:58) 
&lt;br&gt;at org.apache.activemq.broker.region.Queue.dispatch(Queue.java:520) 
&lt;br&gt;at org.apache.activemq.broker.region.Queue.access$600(Queue.java:75) 
&lt;br&gt;at org.apache.activemq.broker.region.Queue$3.afterCommit(Queue.java:341) 
&lt;br&gt;at org.apache.activemq.transaction.Transaction.fireAfterCommit(Transaction.java:83) 
&lt;br&gt;at org.apache.activemq.transaction.LocalTransaction.commit(LocalTransaction.java:71) 
&lt;br&gt;... 14 more 
&lt;br&gt;Caused by: java.io.IOException: Failed to broker message: ID:Gł_Ksiegowa-1407-1256558735734-0:2:3:1:1 in container: java.io.UTFDataFormatException: bad string 
&lt;br&gt;at org.apache.activemq.util.IOExceptionSupport.create(IOExceptionSupport.java:31) 
&lt;br&gt;at org.apache.activemq.store.jdbc.JDBCMessageStore.getMessage(JDBCMessageStore.java:107) 
&lt;br&gt;at org.apache.activemq.store.ProxyMessageStore.getMessage(ProxyMessageStore.java:48) 
&lt;br&gt;at org.apache.activemq.broker.region.IndirectMessageReference.incrementReferenceCount(IndirectMessageReference.java:95) 
&lt;br&gt;... 22 more 
&lt;br&gt;Caused by: java.io.UTFDataFormatException: bad string 
&lt;br&gt;at org.apache.activemq.util.DataByteArrayInputStream.readUTF(DataByteArrayInputStream.java:277) 
&lt;br&gt;at org.apache.activemq.openwire.v2.BaseDataStreamMarshaller.looseUnmarshalString(BaseDataStreamMarshaller.java:536) 
&lt;br&gt;at org.apache.activemq.openwire.v2.ConnectionIdMarshaller.looseUnmarshal(ConnectionIdMarshaller.java:113) 
&lt;br&gt;at org.apache.activemq.openwire.OpenWireFormat.looseUnmarshalNestedObject(OpenWireFormat.java:445) 
&lt;br&gt;at org.apache.activemq.openwire.v2.BaseDataStreamMarshaller.looseUnmarsalCachedObject(BaseDataStreamMarshaller.java:454) 
&lt;br&gt;at org.apache.activemq.openwire.v2.LocalTransactionIdMarshaller.looseUnmarshal(LocalTransactionIdMarshaller.java:117) 
&lt;br&gt;at org.apache.activemq.openwire.OpenWireFormat.looseUnmarshalNestedObject(OpenWireFormat.java:445) 
&lt;br&gt;at org.apache.activemq.openwire.v2.BaseDataStreamMarshaller.looseUnmarsalCachedObject(BaseDataStreamMarshaller.java:454) 
&lt;br&gt;at org.apache.activemq.openwire.v2.MessageMarshaller.looseUnmarshal(MessageMarshaller.java:195) 
&lt;br&gt;at org.apache.activemq.openwire.v2.ActiveMQMessageMarshaller.looseUnmarshal(ActiveMQMessageMarshaller.java:101) 
&lt;br&gt;at org.apache.activemq.openwire.v2.ActiveMQObjectMessageMarshaller.looseUnmarshal(ActiveMQObjectMessageMarshaller.java:101) 
&lt;br&gt;at org.apache.activemq.openwire.OpenWireFormat.doUnmarshal(OpenWireFormat.java:349) 
&lt;br&gt;at org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:204) 
&lt;br&gt;at org.apache.activemq.store.jdbc.JDBCMessageStore.getMessage(JDBCMessageStore.java:104) 
&lt;br&gt;... 24 more &amp;nbsp;
&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;This message is automatically generated by JIRA.
&lt;br&gt;-
&lt;br&gt;You can reply to this email to add a comment to the issue online.
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-jira--Created%3A-%28AMQ-2505%29-Problem-with-servicing-broker-messages-when-client-hostName-contains-%22language-specific%22-characters-%28org.apache.activemq.util.IdGenerator-problem%29-tp26475918p26475918.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26471384</id>
	<title>[jira] Updated: (AMQ-2504) Synchronize time without modifying the system date.</title>
	<published>2009-11-22T17:03:54Z</published>
	<updated>2009-11-22T17:03:54Z</updated>
	<author>
		<name>JIRA jira@apache.org</name>
	</author>
	<content type="html">&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;[ &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQ-2504?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQ-2504?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel&lt;/a&gt;&amp;nbsp;]
&lt;br&gt;&lt;br&gt;Adam Walczak updated AMQ-2504:
&lt;br&gt;------------------------------
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; Description: 
&lt;br&gt;I have a proposal to create a global variable in ActiveMQ's internals which alters the value of System.getCurrentMillis(). Thanks to this we should be able to synchronize clients connected to a JMS server (equipped with an additional NTP server for example) with out modifying their system dates.
&lt;br&gt;&lt;br&gt;Scenario:
&lt;br&gt;&lt;br&gt;1. Servers system date is sync'ed with an NTP server.
&lt;br&gt;&lt;br&gt;2. Clients retrieve their time difference from the NTP server
&lt;br&gt;&lt;br&gt;3. The client set ActiveMq...setTimeDifferenceToServer(...)
&lt;br&gt;&lt;br&gt;4. Every call for system millis in ActiveMQ sources looks like this: System.getCurrentMillis() + ActiveMq...getTimeDifferenceToServer() 
&lt;br&gt;&lt;br&gt;I think it also would be an good idea to wrapper the System.getCurrentMillis() in a internal ActiveMQ method and never call it again directly. This would allow the above modifications and perhaps a to transit to System.nanoTime() to indicate millis in the future which is far more &amp;nbsp;accurate (getCurrentMillis() has a 0-20ms error range).
&lt;br&gt;&lt;br&gt;&amp;nbsp; was:
&lt;br&gt;I have a proposal to create a global variable in ActiveMQ's internals which alters the value of System.getCurrentMillis(). Thanks to this we should be able to synchronize clients connected to a JMS server (equipped with an additional NTP server for example) with out modifying their system dates.
&lt;br&gt;&lt;br&gt;Scenario:
&lt;br&gt;&lt;br&gt;1. Servers system date is sync'ed with an NTP server.
&lt;br&gt;&lt;br&gt;2. Clients retrieve their time difference from the NTP server
&lt;br&gt;&lt;br&gt;3. The client set ActiveMq...setTimeDifferenceToServer(...)
&lt;br&gt;&lt;br&gt;4. Every call for system millis in ActiveMQ sources looks like this: System.getCurrentMillis() + ActiveMq...getTimeDifferenceToServer() 
&lt;br&gt;&lt;br&gt;I also would be an good idea I think to wrapper the System.getCurrentMillis() in a internal ActiveMQ method and never call it again directly. This would allow the above modifications and perhaps a to transit to System.nanoTime() to indicate millis in the future which is far more &amp;nbsp;accurate (getCurrentMillis() has a 0-20ms error range).
&lt;br&gt;&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Synchronize time without modifying the system date.
&lt;br&gt;&amp;gt; ---------------------------------------------------
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Key: AMQ-2504
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; URL: &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQ-2504&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQ-2504&lt;/a&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Project: ActiveMQ
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Issue Type: Improvement
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Components: JMS client
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Reporter: Adam Walczak
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I have a proposal to create a global variable in ActiveMQ's internals which alters the value of System.getCurrentMillis(). Thanks to this we should be able to synchronize clients connected to a JMS server (equipped with an additional NTP server for example) with out modifying their system dates.
&lt;br&gt;&amp;gt; Scenario:
&lt;br&gt;&amp;gt; 1. Servers system date is sync'ed with an NTP server.
&lt;br&gt;&amp;gt; 2. Clients retrieve their time difference from the NTP server
&lt;br&gt;&amp;gt; 3. The client set ActiveMq...setTimeDifferenceToServer(...)
&lt;br&gt;&amp;gt; 4. Every call for system millis in ActiveMQ sources looks like this: System.getCurrentMillis() + ActiveMq...getTimeDifferenceToServer() 
&lt;br&gt;&amp;gt; I think it also would be an good idea to wrapper the System.getCurrentMillis() in a internal ActiveMQ method and never call it again directly. This would allow the above modifications and perhaps a to transit to System.nanoTime() to indicate millis in the future which is far more &amp;nbsp;accurate (getCurrentMillis() has a 0-20ms error range).
&lt;/div&gt;&lt;br&gt;-- 
&lt;br&gt;This message is automatically generated by JIRA.
&lt;br&gt;-
&lt;br&gt;You can reply to this email to add a comment to the issue online.
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-jira--Created%3A-%28AMQ-2504%29-Synchronize-time-without-modifying-the-system-date.-tp26464915p26471384.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26471385</id>
	<title>[jira] Updated: (AMQ-2504) Synchronize time without modifying the system date.</title>
	<published>2009-11-22T17:03:53Z</published>
	<updated>2009-11-22T17:03:53Z</updated>
	<author>
		<name>JIRA jira@apache.org</name>
	</author>
	<content type="html">&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;[ &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQ-2504?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQ-2504?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel&lt;/a&gt;&amp;nbsp;]
&lt;br&gt;&lt;br&gt;Adam Walczak updated AMQ-2504:
&lt;br&gt;------------------------------
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; Description: 
&lt;br&gt;I have a proposal to create a global variable in ActiveMQ's internals which alters the value of System.getCurrentMillis(). Thanks to this we should be able to synchronize clients connected to a JMS server (equipped with an additional NTP server for example) with out modifying their system dates.
&lt;br&gt;&lt;br&gt;Scenario:
&lt;br&gt;&lt;br&gt;1. Servers system date is sync'ed with an NTP server.
&lt;br&gt;&lt;br&gt;2. Clients retrieve their time difference from the NTP server
&lt;br&gt;&lt;br&gt;3. The client set ActiveMq...setTimeDifferenceToServer(...)
&lt;br&gt;&lt;br&gt;4. Every call for system millis in ActiveMQ sources looks like this: System.getCurrentMillis() + ActiveMq...getTimeDifferenceToServer() 
&lt;br&gt;&lt;br&gt;I also would be an good idea I think to wrapper the System.getCurrentMillis() in a internal ActiveMQ method and never call it again directly. This would allow the above modifications and perhaps a to transit to System.nanoTime() to indicate millis in the future which is far more &amp;nbsp;accurate (getCurrentMillis() has a 0-20ms error range).
&lt;br&gt;&lt;br&gt;&amp;nbsp; was:
&lt;br&gt;I have a proposal to create a global variable in ActiveMQ's internals which alters the value of System.getCurrentMillis(). Thanks to this we should be able to synchronize clients connected to a JMS server (equipped with an additional NTP server for example) with out modifying their system dates.
&lt;br&gt;&lt;br&gt;Scenario:
&lt;br&gt;&lt;br&gt;1. Servers system date is sync'ed with an NTP server.
&lt;br&gt;&lt;br&gt;2. Clients retrieve their time difference from the NTP server
&lt;br&gt;&lt;br&gt;3. The client set ActiveMq...setTimeDifferenceToServer(...)
&lt;br&gt;&lt;br&gt;4. Every call for system millis in ActiveMQ sources looks like this: System.getCurrentMillis() + ActiveMq...getTimeDifferenceToServer() 
&lt;br&gt;&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Synchronize time without modifying the system date.
&lt;br&gt;&amp;gt; ---------------------------------------------------
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Key: AMQ-2504
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; URL: &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQ-2504&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQ-2504&lt;/a&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Project: ActiveMQ
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Issue Type: Improvement
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Components: JMS client
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Reporter: Adam Walczak
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I have a proposal to create a global variable in ActiveMQ's internals which alters the value of System.getCurrentMillis(). Thanks to this we should be able to synchronize clients connected to a JMS server (equipped with an additional NTP server for example) with out modifying their system dates.
&lt;br&gt;&amp;gt; Scenario:
&lt;br&gt;&amp;gt; 1. Servers system date is sync'ed with an NTP server.
&lt;br&gt;&amp;gt; 2. Clients retrieve their time difference from the NTP server
&lt;br&gt;&amp;gt; 3. The client set ActiveMq...setTimeDifferenceToServer(...)
&lt;br&gt;&amp;gt; 4. Every call for system millis in ActiveMQ sources looks like this: System.getCurrentMillis() + ActiveMq...getTimeDifferenceToServer() 
&lt;br&gt;&amp;gt; I also would be an good idea I think to wrapper the System.getCurrentMillis() in a internal ActiveMQ method and never call it again directly. This would allow the above modifications and perhaps a to transit to System.nanoTime() to indicate millis in the future which is far more &amp;nbsp;accurate (getCurrentMillis() has a 0-20ms error range).
&lt;/div&gt;&lt;br&gt;-- 
&lt;br&gt;This message is automatically generated by JIRA.
&lt;br&gt;-
&lt;br&gt;You can reply to this email to add a comment to the issue online.
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-jira--Created%3A-%28AMQ-2504%29-Synchronize-time-without-modifying-the-system-date.-tp26464915p26471385.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26464915</id>
	<title>[jira] Created: (AMQ-2504) Synchronize time without modifying the system date.</title>
	<published>2009-11-22T04:29:53Z</published>
	<updated>2009-11-22T04:29:53Z</updated>
	<author>
		<name>JIRA jira@apache.org</name>
	</author>
	<content type="html">Synchronize time without modifying the system date.
&lt;br&gt;---------------------------------------------------
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Key: AMQ-2504
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;URL: &lt;a href=&quot;https://issues.apache.org/activemq/browse/AMQ-2504&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/browse/AMQ-2504&lt;/a&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Project: ActiveMQ
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Issue Type: Improvement
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Components: JMS client
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Reporter: Adam Walczak
&lt;br&gt;&lt;br&gt;&lt;br&gt;I have a proposal to create a global variable in ActiveMQ's internals which alters the value of System.getCurrentMillis(). Thanks to this we should be able to synchronize clients connected to a JMS server (equipped with an additional NTP server for example) with out modifying their system dates.
&lt;br&gt;&lt;br&gt;Scenario:
&lt;br&gt;&lt;br&gt;1. Servers system date is sync'ed with an NTP server.
&lt;br&gt;&lt;br&gt;2. Clients retrieve their time difference from the NTP server
&lt;br&gt;&lt;br&gt;3. The client set ActiveMq...setTimeDifferenceToServer(...)
&lt;br&gt;&lt;br&gt;4. Every call for system millis in ActiveMQ sources looks like this: System.getCurrentMillis() + ActiveMq...getTimeDifferenceToServer() 
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;This message is automatically generated by JIRA.
&lt;br&gt;-
&lt;br&gt;You can reply to this email to add a comment to the issue online.
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-jira--Created%3A-%28AMQ-2504%29-Synchronize-time-without-modifying-the-system-date.-tp26464915p26464915.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26462029</id>
	<title>Re: Weblogic integration</title>
	<published>2009-11-21T17:12:19Z</published>
	<updated>2009-11-21T17:12:19Z</updated>
	<author>
		<name>ammulder</name>
	</author>
	<content type="html">JMS provides a standard for how your code talks to a messaging
&lt;br&gt;provider, but not how two messaging providers talk to each other. &amp;nbsp;In
&lt;br&gt;fact there is no good way to transfer messages between the WebLogic
&lt;br&gt;JMS provider and ActiveMQ (or between any other two JMS providers, for
&lt;br&gt;that matter). &amp;nbsp;You would have to use a bridge that essentially listens
&lt;br&gt;on WebLogic destinations and reposts messages to ActiveMQ or vice
&lt;br&gt;versa. &amp;nbsp;I wouldn't recommend that.
&lt;br&gt;&lt;br&gt;The better way would be to completely ignore the WebLogic JMS
&lt;br&gt;features. &amp;nbsp;You can deploy the ActiveMQ resource adapter in your
&lt;br&gt;WebLogic application EAR and configure any MDBs in your application to
&lt;br&gt;receive messages from ActiveMQ via that resource adapter. &amp;nbsp;You could
&lt;br&gt;also arrange for any connection factories and destinations in your
&lt;br&gt;application to point to ActiveMQ via that resource adapter. &amp;nbsp;I think
&lt;br&gt;that would be the most reliable way to have a Java EE application use
&lt;br&gt;ActiveMQ.
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Aaron
&lt;br&gt;&lt;br&gt;On Fri, Nov 20, 2009 at 6:32 PM, Dickyp &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26462029&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;rickplatt2002@...&lt;/a&gt;&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Aaron
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I have a weblogic server which will be the JMS provider connected to a
&lt;br&gt;&amp;gt; remote ActiveMQ server, the weblogic server will contain MDBs to process
&lt;br&gt;&amp;gt; incoming messages from the ActiveMq server,and generate outgoing messages to
&lt;br&gt;&amp;gt; the the ActiveMQ server.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I thought I would just have to configure a bridge on my weblogic server to
&lt;br&gt;&amp;gt; the remote ActiveMq server.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Is the point about JMS that there is a standard and messages should flow
&lt;br&gt;&amp;gt; between any platform independant of the message brokers used.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Please remeber I am new to this area, certainly in production environment.
&lt;br&gt;&amp;gt; And appreciate any advice or help you can provide.
&lt;br&gt;&amp;gt; Richard
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; ammulder wrote:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Can you explain exactly what you're trying to achieve?  For instance,
&lt;br&gt;&amp;gt;&amp;gt; will you use the WebLogic JMS provider at all?  Are you trying to
&lt;br&gt;&amp;gt;&amp;gt; bridge between WebLogic JMS and ActiveMQ?  Or do you want to use
&lt;br&gt;&amp;gt;&amp;gt; strictly ActiveMQ, where your application sends messages only to
&lt;br&gt;&amp;gt;&amp;gt; ActiveMQ, and MDBs or something get invoked directly from ActiveMQ?
&lt;br&gt;&amp;gt;&amp;gt; What kind of components will be sending and receiving messages?  Are
&lt;br&gt;&amp;gt;&amp;gt; you using a Java EE stack (MDBs) or Spring or something else?
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I ask all this because the integration strategy would be somewhat
&lt;br&gt;&amp;gt;&amp;gt; different for all of these cases.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Thanks,
&lt;br&gt;&amp;gt;&amp;gt;       Aaron
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; On Fri, Nov 20, 2009 at 10:15 AM, Dickyp &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26462029&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;rickplatt2002@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Bruce
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Yes I did, but seemed to relate more to installing ActiveMQ on a weblogic
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; server itself, rather than processing messages from an ActiveMQ server on
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; a
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; weblogic server.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Thanks for the input anyways.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Richard
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; bsnyder wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; On Wed, Nov 18, 2009 at 11:07 AM, Dickyp &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26462029&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;rickplatt2002@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Hi
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I am pretty new to J2ee and JMS, but can anybody point me in the
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; direction
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; of integration of activemq and weblogic (11).  I am running JMS on my
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; weblogic server and want to integrate to external activemq server.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I knwo I need to configure an external bridge to the 3rd party message
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; provider, but assume some classes may be required specifically for
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; activemq.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Any help appreciated.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Have you looked at the doc on the website about this?:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://activemq.apache.org/weblogic-integration.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://activemq.apache.org/weblogic-integration.html&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Bruce
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; --
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; perl -e 'print
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; unpack(&amp;quot;u30&amp;quot;,&amp;quot;D0G)U8V4\@4VYY9&amp;5R\&amp;quot;F)R=6-E+G-N&amp;gt;61E&amp;lt;D\!G;6%I;\&amp;quot;YC;VT*&amp;quot;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; );'
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; ActiveMQ in Action: &lt;a href=&quot;http://bit.ly/2je6cQ&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bit.ly/2je6cQ&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Blog: &lt;a href=&quot;http://bruceblog.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bruceblog.org/&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Twitter: &lt;a href=&quot;http://twitter.com/brucesnyder&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://twitter.com/brucesnyder&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; --
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; View this message in context:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/Weblogic-integration-tp26412743p26442658.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://old.nabble.com/Weblogic-integration-tp26412743p26442658.html&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Sent from the ActiveMQ - Dev mailing list archive at Nabble.com.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; --
&lt;br&gt;&amp;gt; View this message in context: &lt;a href=&quot;http://old.nabble.com/Weblogic-integration-tp26412743p26451916.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://old.nabble.com/Weblogic-integration-tp26412743p26451916.html&lt;/a&gt;&lt;br&gt;&amp;gt; Sent from the ActiveMQ - Dev mailing list archive at Nabble.com.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Weblogic-integration-tp26412743p26462029.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26458133</id>
	<title>Re: Are JIRA issue flooding your inbox?</title>
	<published>2009-11-21T08:32:55Z</published>
	<updated>2009-11-21T08:32:55Z</updated>
	<author>
		<name>bsnyder</name>
	</author>
	<content type="html">On Sat, Nov 21, 2009 at 12:38 AM, Rob Davies &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26458133&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;rajdavies@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt; I attempt weeding every few months - trouble is - its a jungle ;)
&lt;br&gt;&lt;br&gt;Agreed, which is why I'm trying to get everyone to look at a few. Then
&lt;br&gt;we can move on to the 5.4.0 issues using the same scrutiny.
&lt;br&gt;&lt;br&gt;&amp;gt; A lot of
&lt;br&gt;&amp;gt; the unresolved issues will take a lot of time to validate - as they do have
&lt;br&gt;&amp;gt; steps to reproduce - but they aren't junit tests
&lt;br&gt;&lt;br&gt;HIram and I talked about that briefly. We agreed that we need to be
&lt;br&gt;more strict about this. Hiram is in favor of kicking any issue that
&lt;br&gt;doesn't have a test. I wouldn't go that far, my threshold is a
&lt;br&gt;requirement of steps to reproduce. So if neither of those are
&lt;br&gt;available, and the issue seems sufficiently unclear, just kick it.
&lt;br&gt;&lt;br&gt;&amp;gt; Can you make the filter public btw ? I can't see it
&lt;br&gt;&lt;br&gt;Sorry about that, it's now shared.
&lt;br&gt;&lt;br&gt;Bruce
&lt;br&gt;-- 
&lt;br&gt;perl -e 'print unpack(&amp;quot;u30&amp;quot;,&amp;quot;D0G)U8V4\@4VYY9&amp;5R\&amp;quot;F)R=6-E+G-N&amp;gt;61E&amp;lt;D\!G;6%I;\&amp;quot;YC;VT*&amp;quot;
&lt;br&gt;);'
&lt;br&gt;&lt;br&gt;ActiveMQ in Action: &lt;a href=&quot;http://bit.ly/2je6cQ&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bit.ly/2je6cQ&lt;/a&gt;&lt;br&gt;Blog: &lt;a href=&quot;http://bruceblog.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bruceblog.org/&lt;/a&gt;&lt;br&gt;Twitter: &lt;a href=&quot;http://twitter.com/brucesnyder&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://twitter.com/brucesnyder&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Are-JIRA-issue-flooding-your-inbox--tp26453201p26458133.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26454389</id>
	<title>Re: Are JIRA issue flooding your inbox?</title>
	<published>2009-11-20T23:38:53Z</published>
	<updated>2009-11-20T23:38:53Z</updated>
	<author>
		<name>rajdavies</name>
	</author>
	<content type="html">I attempt weeding every few months - trouble is - its a jungle ;) A &amp;nbsp;
&lt;br&gt;lot of the unresolved issues will take a lot of time to validate - as &amp;nbsp;
&lt;br&gt;they do have steps to reproduce - but they aren't junit tests
&lt;br&gt;Can you make the filter public btw ? I can't see it
&lt;br&gt;&lt;br&gt;On 21 Nov 2009, at 02:30, Bruce Snyder wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Today I attacked JIRA with the goal of weeding out issues that no
&lt;br&gt;&amp;gt; longer apply. I worked through about 150 issues, closing many old and
&lt;br&gt;&amp;gt; unrelated issues, recategorizing others. Some of those issues (only 31
&lt;br&gt;&amp;gt; of them) have been marked with a version named NEEDS_REVIEWED. I've
&lt;br&gt;&amp;gt; created and shared a filter for these issues here:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://issues.apache.org/activemq/secure/IssueNavigator.jspa?mode=hide&amp;requestId=11516&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/secure/IssueNavigator.jspa?mode=hide&amp;requestId=11516&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; These issues need further attention. So I'm asking that you take a bit
&lt;br&gt;&amp;gt; to review just a few of those issues with the following items in mind:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; 1) Does the issue have a patch? If so, please dig in enough to
&lt;br&gt;&amp;gt; determine if the issue is still valid.
&lt;br&gt;&amp;gt; 2) Does the issue have steps to reproduce? If so, please dig in to
&lt;br&gt;&amp;gt; determine if the issue is still valid.
&lt;br&gt;&amp;gt; 2) Are there votes and watches on the issue indicating popularity? If
&lt;br&gt;&amp;gt; so, reconsider before closing an issue.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; With all of us pitching into to do a little bit of work, the task will
&lt;br&gt;&amp;gt; get done faster. The goal of this exercise is to:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; 1) Mark issues for 5.4.0 if they still apply
&lt;br&gt;&amp;gt; 2) Close issues that no longer apply
&lt;br&gt;&amp;gt; 3) Close issues that don't have enough info to reproduce
&lt;br&gt;&amp;gt; 4) Recategorize issues that simply request a feature with no other
&lt;br&gt;&amp;gt; info as type Wish
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Let me know if you have any problems or questions.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Bruce
&lt;br&gt;&amp;gt; -- 
&lt;br&gt;&amp;gt; perl -e 'print unpack(&amp;quot;u30&amp;quot;,&amp;quot;D0G)U8V4\@4VYY9&amp;5R\&amp;quot;F)R=6-E+G-N&amp;gt;61E&amp;lt;D\! 
&lt;br&gt;&amp;gt; G;6%I;\&amp;quot;YC;VT*&amp;quot;
&lt;br&gt;&amp;gt; );'
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; ActiveMQ in Action: &lt;a href=&quot;http://bit.ly/2je6cQ&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bit.ly/2je6cQ&lt;/a&gt;&lt;br&gt;&amp;gt; Blog: &lt;a href=&quot;http://bruceblog.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bruceblog.org/&lt;/a&gt;&lt;br&gt;&amp;gt; Twitter: &lt;a href=&quot;http://twitter.com/brucesnyder&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://twitter.com/brucesnyder&lt;/a&gt;&lt;/div&gt;&lt;br&gt;Rob Davies
&lt;br&gt;&lt;a href=&quot;http://twitter.com/rajdavies&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://twitter.com/rajdavies&lt;/a&gt;&lt;br&gt;I work here: &lt;a href=&quot;http://fusesource.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://fusesource.com&lt;/a&gt;&lt;br&gt;My Blog: &lt;a href=&quot;http://rajdavies.blogspot.com/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://rajdavies.blogspot.com/&lt;/a&gt;&lt;br&gt;I'm writing this: &lt;a href=&quot;http://www.manning.com/snyder/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.manning.com/snyder/&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Are-JIRA-issue-flooding-your-inbox--tp26453201p26454389.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26453201</id>
	<title>Are JIRA issue flooding your inbox?</title>
	<published>2009-11-20T18:30:19Z</published>
	<updated>2009-11-20T18:30:19Z</updated>
	<author>
		<name>bsnyder</name>
	</author>
	<content type="html">Today I attacked JIRA with the goal of weeding out issues that no
&lt;br&gt;longer apply. I worked through about 150 issues, closing many old and
&lt;br&gt;unrelated issues, recategorizing others. Some of those issues (only 31
&lt;br&gt;of them) have been marked with a version named NEEDS_REVIEWED. I've
&lt;br&gt;created and shared a filter for these issues here:
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;https://issues.apache.org/activemq/secure/IssueNavigator.jspa?mode=hide&amp;requestId=11516&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/activemq/secure/IssueNavigator.jspa?mode=hide&amp;requestId=11516&lt;/a&gt;&lt;br&gt;&lt;br&gt;These issues need further attention. So I'm asking that you take a bit
&lt;br&gt;to review just a few of those issues with the following items in mind:
&lt;br&gt;&lt;br&gt;1) Does the issue have a patch? If so, please dig in enough to
&lt;br&gt;determine if the issue is still valid.
&lt;br&gt;2) Does the issue have steps to reproduce? If so, please dig in to
&lt;br&gt;determine if the issue is still valid.
&lt;br&gt;2) Are there votes and watches on the issue indicating popularity? If
&lt;br&gt;so, reconsider before closing an issue.
&lt;br&gt;&lt;br&gt;With all of us pitching into to do a little bit of work, the task will
&lt;br&gt;get done faster. The goal of this exercise is to:
&lt;br&gt;&lt;br&gt;1) Mark issues for 5.4.0 if they still apply
&lt;br&gt;2) Close issues that no longer apply
&lt;br&gt;3) Close issues that don't have enough info to reproduce
&lt;br&gt;4) Recategorize issues that simply request a feature with no other
&lt;br&gt;info as type Wish
&lt;br&gt;&lt;br&gt;Let me know if you have any problems or questions.
&lt;br&gt;&lt;br&gt;Bruce
&lt;br&gt;-- 
&lt;br&gt;perl -e 'print unpack(&amp;quot;u30&amp;quot;,&amp;quot;D0G)U8V4\@4VYY9&amp;5R\&amp;quot;F)R=6-E+G-N&amp;gt;61E&amp;lt;D\!G;6%I;\&amp;quot;YC;VT*&amp;quot;
&lt;br&gt;);'
&lt;br&gt;&lt;br&gt;ActiveMQ in Action: &lt;a href=&quot;http://bit.ly/2je6cQ&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bit.ly/2je6cQ&lt;/a&gt;&lt;br&gt;Blog: &lt;a href=&quot;http://bruceblog.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bruceblog.org/&lt;/a&gt;&lt;br&gt;Twitter: &lt;a href=&quot;http://twitter.com/brucesnyder&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://twitter.com/brucesnyder&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Are-JIRA-issue-flooding-your-inbox--tp26453201p26453201.html" />
</entry>

</feed>
