Let me start by saying I know schedulerSupport=true needs to be set in activemq.xml.
I am trying to get the delay router sample posted by G Tully working with an external instance of activemq (as opposed to an embedded broker). I have a test case that demonstrate AMQ_SCHEDULED_DELAY/schedulerSupport=True working properly with spring alone. This works as expected with either an embedded broker or an external instance of activemq. I have a test case with spring/camel that works with the embeded broker, but not the external instance of active mq. (this is the same instance that successfully demonstrates the delay when using spring alone). I have tried this with 5.4.2 and 5.6.0 with the same results. This is the spring only test case that works in both cases @ContextConfiguration(locations={"classpath:test.xml"}) public class TestWithSpring extends AbstractJUnit4SpringContextTests { @Test public void testSchedulerSupport() throws InterruptedException, JMSException { ActiveMQConnectionFactory factory = (ActiveMQConnectionFactory) applicationContext.getBean("connectionFactory"); ActiveMQConnection connection = (ActiveMQConnection) factory.createConnection(); connection.start(); Session session = connection.createSession(true, Session.SESSION_TRANSACTED); ActiveMQQueue destination = new ActiveMQQueue("theQueue"); MessageProducer producer = session.createProducer(destination); MessageConsumer consumer = session.createConsumer(destination); TextMessage msg = session.createTextMessage("1st"); msg.setLongProperty("AMQ_SCHEDULED_DELAY", 60 * 1000); producer.send(msg); session.commit(); TextMessage m; m = (TextMessage)consumer.receive(1000); assertNull(m); m = (TextMessage)consumer.receive(120 * 1000); assertNotNull("got redelivery on second attempt", m); assertEquals("text matches original", "1st", m.getText()); session.commit(); } } test.xml ... <bean id="connectionFactory" class="org.apache.activemq.spring.ActiveMQConnectionFactory"> <property name="brokerURL" value="tcp://127.0.0.1:61616" /> </bean> This is the test with camel. It works if I use the embedded broker but not the external instance of activemq @ContextConfiguration(locations={"classpath:testWithCamel.xml"}) public class TestWithSpringAndCamel extends AbstractJUnit4SpringContextTests { @Test public void testSchedulerSupport() throws InterruptedException, JMSException { ActiveMQConnectionFactory factory = (ActiveMQConnectionFactory) applicationContext.getBean("connectionFactory"); ActiveMQConnection connection = (ActiveMQConnection) factory.createConnection(); RedeliveryPolicy policy = connection.getRedeliveryPolicy(); policy.setMaximumRedeliveries(0); connection.start(); Session session = connection.createSession(true, Session.SESSION_TRANSACTED); ActiveMQQueue destination = new ActiveMQQueue("theQueue"); MessageProducer producer = session.createProducer(destination); MessageConsumer consumer = session.createConsumer(destination); TextMessage msg = session.createTextMessage("1st"); producer.send(msg); session.commit(); TextMessage m; m = (TextMessage)consumer.receive(1000); assertNotNull(m); String msgTxt = m.getText(); assertEquals("1st", m.getText()); session.rollback(); m = (TextMessage)consumer.receive(7000); assertNull("no immediate redelivery", m); m = (TextMessage)consumer.receive(120000); assertNotNull("got redelivery on second attempt", m); assertEquals("text matches original", "1st", m.getText()); // came from camel assertTrue("redelivery marker header set, so came from camel", m.getBooleanProperty("CamelRedeliveryMarker")); session.commit(); } } testWithCamel.xml <bean id="messageConverter" class="org.apache.activemq.camel.converter.IdentityMessageReuseConverter" /> <camel:camelContext id="mzCamel" trace="true"> <camel:route> <camel:from uri="activemq:ActiveMQ.DLQ?mapJmsMessage=false"/> <camel:setHeader headerName="CamelRedeliveryMarker"><camel:constant>true</camel:constant></camel:setHeader> <camel:setHeader headerName="AMQ_SCHEDULED_DELAY"><camel:constant>60000</camel:constant></camel:setHeader> <camel:to pattern="InOnly" uri="activemq:theQueue?explicitQosEnabled=true&messageConverter=#messageConverter" /> </camel:route> </camel:camelContext> <bean id="connectionFactory" class="org.apache.activemq.spring.ActiveMQConnectionFactory"> <property name="brokerURL" value="tcp://127.0.0.1:61616" /> </bean> -- View this message in context: http://camel.465427.n5.nabble.com/AMQ-SCHEDULED-DELAY-problem-with-camel-tp5714870.html Sent from the Camel - Users mailing list archive at Nabble.com.