activeMQ简单事例应用

来源:互联网 发布:java异常日志记录 编辑:程序博客网 时间:2024/05/14 22:48

1.先开启MQ服务
这里写图片描述

包结构:
这里写图片描述
2.创建发送者

import javax.jms.Connection;import javax.jms.ConnectionFactory;import javax.jms.Destination;import javax.jms.JMSException;import javax.jms.MessageProducer;import javax.jms.Session;import javax.jms.TextMessage;import org.apache.activemq.ActiveMQConnection;import org.apache.activemq.ActiveMQConnectionFactory;/** * 消息的生产者  * http://localhost:8161/admin/queues.jsp监控平台访问地址 * @author  * @date  */public class Product {    private static final String USERNAME = ActiveMQConnection.DEFAULT_USER;// 默认连接用户名    private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;// 默认连接密码    private static final String BROKEURL = ActiveMQConnection.DEFAULT_BROKER_URL;// 默认连接地址    private static final int SENDNUM = 10;// 发送的消息数量    public static void main(String[] args) {        ConnectionFactory connectionFactory;// 连接工厂        Connection connection = null;// 连接        Session session;// 会话 接受或者发送消息的线程        Destination destination;// 消息的目的地        MessageProducer messageProducer;// 消息生产者(接口  目标)        // 实例化连接工厂        connectionFactory = new ActiveMQConnectionFactory(Product.USERNAME,Product.PASSWORD, Product.BROKEURL);        try {            connection = connectionFactory.createConnection();// 通过连接工厂获取连接            connection.start();// 启动连接            session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);// 创建session            destination = session.createQueue("java0901");// 创建一个名称为java0901的消息队列(可以理解为qq群的群名)            messageProducer = session.createProducer(destination);// 创建消息生产者            sendMessage(session, messageProducer);// 发送消息            session.commit();//最后要commint一下要不消息进不到消息管道中        } catch (Exception e) {            e.printStackTrace();        } finally {            if (connection != null) {                try {                    connection.close();                } catch (JMSException e) {                    e.printStackTrace();                }            }        }    }}

发送消息

/**     * 发送消息     * @param session     * @param messageProducer 消息生产者     * @throws Exception     */    public static void sendMessage(Session session,MessageProducer messageProducer) throws Exception {        for (int i = 0; i < Product.SENDNUM; i++) {               // 创建一条文本消息            TextMessage message = session.createTextMessage("ActiveMQ 发送消息" + i);            System.out.println("发送消息:Activemq 发送消息" + i);// 通过消息生产者发出消息        }    }

接收消息

import javax.jms.Connection;import javax.jms.ConnectionFactory;import javax.jms.Destination;import javax.jms.JMSException;import javax.jms.MessageConsumer;import javax.jms.Session;import javax.jms.TextMessage;import org.apache.activemq.ActiveMQConnection;import org.apache.activemq.ActiveMQConnectionFactory;/** * 消息的接收者、消费者 * http://localhost:8161/admin/queues.jsp * @author  * @date  *  */public class Consumer {    private static final String USERNAME = ActiveMQConnection.DEFAULT_USER;// 默认连接用户名    private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;// 默认连接密码    private static final String BROKEURL = ActiveMQConnection.DEFAULT_BROKER_URL;// 默认连接地址    public static void main(String[] args) {        ConnectionFactory connectionFactory;// 连接工厂        Connection connection = null;// 连接        Session session;// 会话 接受或者发送消息的线程        Destination destination;// 消息的目的地        MessageConsumer messageConsumer;// 消息的消费者        // 实例化连接工厂        connectionFactory = new ActiveMQConnectionFactory(Consumer.USERNAME,Consumer.PASSWORD, Consumer.BROKEURL);        try {            connection = connectionFactory.createConnection();// 通过连接工厂获取连接            connection.start();// 启动连接            session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);// 创建session            destination = session.createQueue("java0901");// 创建一个连接nihao1的消息队列            messageConsumer = session.createConsumer(destination);// 创建消息消费者//一直处于接收状态,有消息就接收            while (true) {                TextMessage textMessage =                     (TextMessage) messageConsumer.receive(100000);                if (textMessage != null) {                    System.out.println("收到的消息:" + textMessage.getText());                } else {                    break;                }            }        } catch (JMSException e) {            e.printStackTrace();        }    }}