Active MQ使用 http://www.huaishao8.com/tag/activemq Kagula 2011-9-6 介绍 Active MQ是个消息队列管理器,用于通讯的中间件。 Java Active MQ的常见使用方式有两种:[1]点对点方式(Producer/Consumer)[2]发布/订阅者方式(Publisher/Subscriber Model)
Active MQ使用
http://www.huaishao8.com/tag/activemq
Kagula
2011-9-6
介绍
Active MQ是个消息队列管理器,用于通讯的中间件。
Java + Active MQ的常见使用方式有两种:[1]点对点方式(Producer/Consumer)[2]发布/订阅者方式(Publish
本文来源gaodai.ma#com搞#代!码网_
er/Subscriber Model)
测试环境[1]JDK1.6.x [2]Eclipse Indigo [3]Active MQ 5.4.2
建议不要使用Active MQ 5.5.0 因为activemq-all-5.5.0.jar缺少依赖项。
正文
参考资料[1] 保证Active MQ已经正确安装与启动。
点对点(Producer、Consumer)模式
图一 JMS对象模型
Producer端源码示例
import org.apache.activemq.ActiveMQConnection; import org.apache.activemq.ActiveMQConnectionFactory; import javax.jms.*; /** * 消息的生产者(发送者) * */ public class JmsSender { public static void main(String[] args) throws JMSException { // ConnectionFactory :连接工厂,JMS 用它创建连接 ConnectionFactory connectionFactory = new ActiveMQConnectionFactory( ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD, "failover://(tcp://127.0.0.1:61616)"); //JMS 客户端到JMS Provider 的连接 Connection connection = connectionFactory.createConnection(); connection.start(); // Session: 一个发送或接收消息的线程 // createSession的第一个参数Boolean.FALSE指的是当前session不是一个事务 // 即消息是自动提交,你不能调用session.commit函数提交事务。 // createSession的第一个参数Boolean.TRUE指的是新创建的session是一个事务 // 你必须调用session.commit函数来提交事务,才能真正把消息放到队列服务器中 Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); // Destination :消息的目的地;消息发送给谁. // 获取session注意参数值my-queue是Query的名字 Destination destination = session.createQueue("my-queue"); // MessageProducer:消息生产者 MessageProducer producer = session.createProducer(destination); //设置不持久化 producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); //发送一条消息 sendMsg(session, producer); connection.close(); } /** * 在指定的会话上,通过指定的消息生产者发出一条消息 * * @param session 消息会话 * @param producer 消息生产者 */ public static void sendMsg(Session session, MessageProducer producer) throws JMSException { //创建一条文本消息 TextMessage message = session.createTextMessage("Hello ActiveMQ!"); //通过消息生产者发出消息 producer.send(message); System.out.println(""); } }