Scheduled messages differ from normal messages in that they won’t be delivered until a specified time in the future, at the earliest.
To do this, a special property is set on the message before sending it.
The property name used to identify a scheduled message is
"_AMQ_SCHED_DELIVERY" (or the constant
The specified value must be a positive
long corresponding to the time the message must be delivered (in milliseconds).
An example of sending a scheduled message using the JMS API is as follows.
TextMessage message = session.createTextMessage("This is a scheduled message message which will be delivered in 5 sec."); message.setLongProperty("_AMQ_SCHED_DELIVERY", System.currentTimeMillis() + 5000); producer.send(message); ... // message will not be received immediately but 5 seconds later TextMessage messageReceived = (TextMessage) consumer.receive();
Scheduled messages can also be sent using the core API, by setting the same property on the core message before sending.