package org.apache.activemq.recipes; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import javax.jms.Connection; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageConsumer; import javax.jms.MessageListener; import javax.jms.MessageProducer; import javax.jms.Session; import javax.jms.TextMessage; import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.activemq.ScheduledMessage; public class MessageSchedulingExample implements MessageListener { private final String connectionUri = "tcp://localhost:61616"; private ActiveMQConnectionFactory connectionFactory; private Connection connection; private Session session; private Destination destination; private MessageProducer producer; private MessageConsumer consumer; private final long delay = TimeUnit.SECONDS.toMillis(10); private final long period = TimeUnit.SECONDS.toMillis(5); private final int repeat = 9; private final CountDownLatch done = new CountDownLatch(10); public void before() throws Exception { connectionFactory = new ActiveMQConnectionFactory(connectionUri); connection = connectionFactory.createConnection(); session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); destination = session.createTopic("Alarm.Clock"); producer = session.createProducer(destination); consumer = session.createConsumer(destination); consumer.setMessageListener(this); connection.start(); } public void after() throws Exception { if (connection != null) { connection.close(); } } public void onMessage(Message message) { try { TextMessage text = (TextMessage) message; System.out.println(text.getText()); } catch (JMSException e) { } done.countDown(); } public void run() throws Exception { TextMessage message = session.createTextMessage("Wake Up!"); message.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_DELAY, delay); message.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_PERIOD, period); message.setIntProperty(ScheduledMessage.AMQ_SCHEDULED_REPEAT, repeat); producer.send(message); System.out.println("Wakeup call set, going to sleep now."); done.await(); System.out.println("Fine! I'm awake!"); } public static void main(String[] args) { MessageSchedulingExample example = new MessageSchedulingExample(); System.out.print("\n\n\n"); System.out.println("Starting Scheduled Message example now..."); try { example.before(); example.run(); example.after(); } catch (Exception e) { System.out.println("Caught an exception during the example: " + e.getMessage()); } System.out.println("Finished running the Scheduled Message example."); System.out.print("\n\n\n"); } }