Hi all.
I've managed to configure ActiveMQ to work either as a JNDI resource (in
context.xml) or as a Spring set of beans. In either case everything works
fine, excepted to have messages scheduled with a delay.
Following directions from the relevant page (
https://activemq.apache.org/delay-and-schedule-message-delivery.html
<https://activemq.apache.org/delay-and-schedule-message-delivery.html> )
I've tried to understand where to set that property
(*schedulerSupport="true"*). As I'm using an embedded configuration, I've
tried to follow the relevant link near the bottom of page
https://activemq.apache.org/xml-configuration.html
<https://activemq.apache.org/xml-configuration.html> . That link is broken
http://svn.apache.org/repos/asf/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/config/BrokerXmlConfigFromJNDITest.java
<http://svn.apache.org/repos/asf/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/config/BrokerXmlConfigFromJNDITest.java>
).
In the Spring version I've a snippet like the following:
*<amq:broker useJmx="false" persistent="false">
<amq:transportConnectors>
<amq:transportConnector uri="tcp://localhost:0" />
</amq:transportConnectors>
</amq:broker>
<amq:connectionFactory id="jmsConnectionFactory"
brokerURL="vm://localhost"/>
In the JNDI version, resources more or less corresponding to the above beans
are declared in the context.xml with a snippet like the following:
<Resource name="jms/ConnectionFactory" auth="Container"
type="org.apache.activemq.ActiveMQConnectionFactory" description="JMS
Connection Factory"
factory="org.apache.activemq.jndi.JNDIReferenceFactory"
brokerURL="vm://localhost"
brokerName="LocalActiveMQBroker" />
To schedule a delayed message I've used these lines of code:
jmsTemplate_i.send(queue_i, new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
TextMessage message = session.createTextMessage(message_p);
message.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_DELAY,
delay);
return message;
}});
where delay is 60000 (for 60 seconds).
But, as expected (no property set...), messages keep being delivered without
any delay.
I've come to a dead end. Any help?
Thank you in advance.
Alessandro
I've managed to configure ActiveMQ to work either as a JNDI resource (in
context.xml) or as a Spring set of beans. In either case everything works
fine, excepted to have messages scheduled with a delay.
Following directions from the relevant page (
https://activemq.apache.org/delay-and-schedule-message-delivery.html
<https://activemq.apache.org/delay-and-schedule-message-delivery.html> )
I've tried to understand where to set that property
(*schedulerSupport="true"*). As I'm using an embedded configuration, I've
tried to follow the relevant link near the bottom of page
https://activemq.apache.org/xml-configuration.html
<https://activemq.apache.org/xml-configuration.html> . That link is broken
http://svn.apache.org/repos/asf/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/config/BrokerXmlConfigFromJNDITest.java
<http://svn.apache.org/repos/asf/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/config/BrokerXmlConfigFromJNDITest.java>
).
In the Spring version I've a snippet like the following:
*<amq:broker useJmx="false" persistent="false">
<amq:transportConnectors>
<amq:transportConnector uri="tcp://localhost:0" />
</amq:transportConnectors>
</amq:broker>
<amq:connectionFactory id="jmsConnectionFactory"
brokerURL="vm://localhost"/>
In the JNDI version, resources more or less corresponding to the above beans
are declared in the context.xml with a snippet like the following:
<Resource name="jms/ConnectionFactory" auth="Container"
type="org.apache.activemq.ActiveMQConnectionFactory" description="JMS
Connection Factory"
factory="org.apache.activemq.jndi.JNDIReferenceFactory"
brokerURL="vm://localhost"
brokerName="LocalActiveMQBroker" />
To schedule a delayed message I've used these lines of code:
jmsTemplate_i.send(queue_i, new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
TextMessage message = session.createTextMessage(message_p);
message.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_DELAY,
delay);
return message;
}});
where delay is 60000 (for 60 seconds).
But, as expected (no property set...), messages keep being delivered without
any delay.
I've come to a dead end. Any help?
Thank you in advance.
Alessandro