千家信息网

JMS消息队列ActiveMQ(点对点模式)

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,生产者(producer)->消息队列(message queue)package com.java1234.activemq;import javax.jms.Connection;import j
千家信息网最后更新 2025年02月01日JMS消息队列ActiveMQ(点对点模式)

生产者(producer)->消息队列(message queue)


package com.java1234.activemq;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;/** * 消息生产者 * @author Administrator * */public class JMSProducer {        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(JMSProducer.USERNAME, JMSProducer.PASSWORD, JMSProducer.BROKEURL);                                try {                        connection=connectionFactory.createConnection(); // 通过连接工厂获取连接                        connection.start(); // 启动连接                        session=connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); // 创建Session                        destination=session.createQueue("FirstQueue1"); // 创建消息队列                        messageProducer=session.createProducer(destination); // 创建消息生产者                        sendMessage(session, messageProducer); // 发送消息                        session.commit();                } catch (Exception e) {                        // TODO Auto-generated catch block                        e.printStackTrace();                } finally{                        if(connection!=null){                                try {                                        connection.close();                                } catch (JMSException e) {                                        // TODO Auto-generated catch block                                        e.printStackTrace();                                }                        }                }        }                /**         * 发送消息         * @param session         * @param messageProducer         * @throws Exception         */        public static void sendMessage(Session session,MessageProducer messageProducer)throws Exception{                for(int i=0;i


消费者(Consumer)--(监听)->消息队列

package com.java1234.activemq;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;/** * 消息消费者 * @author Administrator * */public class JMSConsumer2 {        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(JMSConsumer2.USERNAME, JMSConsumer2.PASSWORD, JMSConsumer2.BROKEURL);                                                try {                        connection=connectionFactory.createConnection();  // 通过连接工厂获取连接                        connection.start(); // 启动连接                        session=connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE); // 创建Session                        destination=session.createQueue("FirstQueue1");  // 创建连接的消息队列                        messageConsumer=session.createConsumer(destination); // 创建消息消费者                        messageConsumer.setMessageListener(new Listener()); // 注册消息监听                } catch (JMSException e) {                        // TODO Auto-generated catch block                        e.printStackTrace();                }         }}


监听(Listener)消息队列

package com.java1234.activemq;import javax.jms.JMSException;import javax.jms.Message;import javax.jms.MessageListener;import javax.jms.TextMessage;/** * 消息监听 * @author Administrator * */public class Listener implements MessageListener{        @Override        public void onMessage(Message message) {                // TODO Auto-generated method stub                try {                        System.out.println("收到的消息:"+((TextMessage)message).getText());                } catch (JMSException e) {                        // TODO Auto-generated catch block                        e.printStackTrace();                }        }}


0