1、启动ActiveMQ服务器
2、消息的发送
import java.util.Date; import javax.jms.Connection; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.MapMessage; import javax.jms.MessageProducer; import javax.jms.Session; import org.apache.activemq.ActiveMQConnection; import org.apache.activemq.ActiveMQConnectionFactory; /** * 消息的发送者 */ public class Producer { public static void main(String[] args) { String user = ActiveMQConnection.DEFAULT_USER; String password = ActiveMQConnection.DEFAULT_PASSWORD; String url = ActiveMQConnection.DEFAULT_BROKER_URL; String subject = "TOOL.DEFAULT"; /**创建连接工厂*/ ActiveMQConnectionFactory contectionFactory = new ActiveMQConnectionFactory( user, password, url); try { /**创建连接*/ Connection connection = contectionFactory.createConnection(); connection.start();//开启连接 /**创建session*/ Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); /**指定消息的目的地*/ Destination destination = session.createQueue(subject); /**创建发送消息对象*/ MessageProducer producer = session.createProducer(destination); for (int i = 0; i <= 2; i++) { MapMessage message = session.createMapMessage(); Date date = new Date(); message.setLong("date", date.getTime()); message.setString("seqnum", String.valueOf(i)); Thread.sleep(1000); producer.send(message); System.out.println("发送端发送消息:" + date); } session.commit(); session.close(); connection.close(); } catch (JMSException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } } }
3、消息的消费
/** * queue:消息消费者 * * @author 文超 * @version [版本号, Apr 27, 2013 5:28:49 PM ] * @see [相关类/方法] * @since [产品/模块版本] */ public class Consumer { public static void main(String[] args) { String user = ActiveMQConnection.DEFAULT_USER; String password = ActiveMQConnection.DEFAULT_PASSWORD; String url = ActiveMQConnection.DEFAULT_BROKER_URL; String subject = "TOOL.DEFAULT"; ConnectionFactory connectionFactory = new ActiveMQConnectionFactory( user, password, url); Connection connection; try { connection = connectionFactory.createConnection(); connection.start(); final Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); Destination destination = session.createQueue(subject); MessageConsumer message = session.createConsumer(destination); message.setMessageListener(new MessageListener() { public void onMessage(Message msg) { MapMessage message = (MapMessage) msg; try { System.out.println("接收端收到消息," +message.getString("seqnum")+":"+ new Date(message.getLong("data"))); session.commit(); } catch (JMSException e) { e.printStackTrace(); } } }); Thread.sleep(3000); session.close(); connection.close(); } catch (JMSException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } } }