AMQ-6808 preserve destination for browsed scheduled messages (cherry picked from commit c691124d3288ffc9299bedca69b952952f2cbcf6)
Project: http://git-wip-us.apache.org/repos/asf/activemq/repo Commit: http://git-wip-us.apache.org/repos/asf/activemq/commit/e1699d58 Tree: http://git-wip-us.apache.org/repos/asf/activemq/tree/e1699d58 Diff: http://git-wip-us.apache.org/repos/asf/activemq/diff/e1699d58 Branch: refs/heads/activemq-5.15.x Commit: e1699d58c899700a221662d6f4c728cc306ee97b Parents: d894d57 Author: Erik Wramner <erik.wram...@codemint.com> Authored: Tue Sep 12 21:46:02 2017 +0200 Committer: Timothy Bish <tabish...@gmail.com> Committed: Fri Sep 15 09:03:58 2017 -0400 ---------------------------------------------------------------------- .../org/apache/activemq/broker/scheduler/SchedulerBroker.java | 4 ++++ .../activemq/broker/scheduler/JobSchedulerManagementTest.java | 4 ++++ 2 files changed, 8 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/activemq/blob/e1699d58/activemq-broker/src/main/java/org/apache/activemq/broker/scheduler/SchedulerBroker.java ---------------------------------------------------------------------- diff --git a/activemq-broker/src/main/java/org/apache/activemq/broker/scheduler/SchedulerBroker.java b/activemq-broker/src/main/java/org/apache/activemq/broker/scheduler/SchedulerBroker.java index a00b456..5542973 100644 --- a/activemq-broker/src/main/java/org/apache/activemq/broker/scheduler/SchedulerBroker.java +++ b/activemq-broker/src/main/java/org/apache/activemq/broker/scheduler/SchedulerBroker.java @@ -426,6 +426,10 @@ public class SchedulerBroker extends BrokerFilter implements JobListener { msg.setPersistent(false); msg.setType(AdvisorySupport.ADIVSORY_MESSAGE_TYPE); msg.setMessageId(new MessageId(this.producerId, this.messageIdGenerator.getNextSequenceId())); + + // Preserve original destination + msg.setOriginalDestination(msg.getDestination()); + msg.setDestination(replyTo); msg.setResponseRequired(false); msg.setProducerId(this.producerId); http://git-wip-us.apache.org/repos/asf/activemq/blob/e1699d58/activemq-unit-tests/src/test/java/org/apache/activemq/broker/scheduler/JobSchedulerManagementTest.java ---------------------------------------------------------------------- diff --git a/activemq-unit-tests/src/test/java/org/apache/activemq/broker/scheduler/JobSchedulerManagementTest.java b/activemq-unit-tests/src/test/java/org/apache/activemq/broker/scheduler/JobSchedulerManagementTest.java index c944be3..6f6dc76 100644 --- a/activemq-unit-tests/src/test/java/org/apache/activemq/broker/scheduler/JobSchedulerManagementTest.java +++ b/activemq-unit-tests/src/test/java/org/apache/activemq/broker/scheduler/JobSchedulerManagementTest.java @@ -34,6 +34,7 @@ import javax.jms.Session; import javax.jms.TextMessage; import org.apache.activemq.ScheduledMessage; +import org.apache.activemq.command.ActiveMQMessage; import org.apache.activemq.util.IdGenerator; import org.junit.Test; import org.slf4j.Logger; @@ -396,6 +397,9 @@ public class JobSchedulerManagementTest extends JobSchedulerTestSupport { assertNotNull(message); assertEquals(45000, message.getLongProperty(ScheduledMessage.AMQ_SCHEDULED_DELAY)); + // Verify that original destination was preserved + assertEquals(destination, ((ActiveMQMessage) message).getOriginalDestination()); + // Now check if there are anymore, there shouldn't be message = browser.receive(5000); assertNull(message);