package org.apache.activemq.recipes; import java.util.ArrayList; import java.util.Random; import javax.jms.Connection; import javax.jms.Destination; import javax.jms.Message; import javax.jms.MessageProducer; import javax.jms.Session; import org.apache.activemq.ActiveMQConnectionFactory; public class TickerPublisher { private final String connectionUri = "tcp://localhost:61616"; private ActiveMQConnectionFactory connectionFactory; private Connection connection; private Session session; private Destination destination; private final Random pricePicker = new Random(); private final ArrayList<String> symbols = new ArrayList<String>(3); public void before() throws Exception { connectionFactory = new ActiveMQConnectionFactory(connectionUri); connection = connectionFactory.createConnection(); session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); destination = session.createTopic("EVENTS.QUOTES"); symbols.add("AAPL"); symbols.add("GOOG"); symbols.add("MSFT"); symbols.add("ORCL"); } public void after() throws Exception { if (connection != null) { connection.close(); } } public void run() throws Exception { MessageProducer producer = session.createProducer(destination); for (int i = 0; i < 10000; ++i) { System.out.println("Producer sending price update("+i+")"); for (String symbol : symbols) { Message message = session.createMessage(); message.setStringProperty("symbol", symbol); message.setFloatProperty("price", pricePicker.nextFloat() * 1000); System.out.println(symbol + ": $ ("+message.getFloatProperty("price")+")"); producer.send(message); } Thread.sleep(5); } producer.close(); } public static void main(String[] args) { TickerPublisher producer = new TickerPublisher(); System.out.print("\n\n\n"); System.out.println("Starting example Stock Ticker Publisher now..."); try { producer.before(); producer.run(); producer.after(); } catch (Exception e) { System.out.println("Caught an exception during the example: " + e.getMessage()); } System.out.println("Finished running the sample Stock Ticker Publisher app."); System.out.print("\n\n\n"); } }