ActiveMQ使用JMS发送信息

项目中有用到ActiveMQ ,这里记一下本地测试的方法:
首先导包:

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.MessageProducer;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;

然后使用生产者发送消息:

	// tcp 地址
    static final String BROKER_URL = "tcp://127.0.0.1:61616";
    // 目标,
    static final String DESTINATION = "test.mq.jms";
    
    /**
           * 发送消息
     * @param sess
     * @param prod
     * @throws Exception
     */    
    public static void sendMessage(Session sess, MessageProducer prod,String message) throws Exception {
        TextMessage text = sess.createTextMessage(message);
        prod.send(text);
    }
    
    
    public static void main(String[] args) throws Exception {
    	 
        Connection conn = null;
        Session sess = null;
        try {
            // 创建链接工厂
            ConnectionFactory factory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD, BROKER_URL);
            // 通过工厂创建连接
            conn = factory.createConnection();
            // 启动连接
            conn.start();
            // 创建session(第一个参数为true时,第二个参数无效)
            sess = conn.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
            // 创建消息队列
            Destination dest = sess.createQueue(DESTINATION);
            // 创建消息制作者
            MessageProducer prod = sess.createProducer(dest);
            // 设置持久化模式(NON_PERSISTENT:不持久/PERSISTENT持久化)
            prod.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
            sendMessage(sess, prod,"测试消息");
            // 提交会话
            sess.commit();
            
        } catch (Exception e) {
            throw e;
        } finally {
            // 关闭释放资源
            if (sess != null) {
                sess.close();
            }
            if (conn != null) {
                conn.close();
            }
        }
    }

通过消费者获取消息:

	// tcp 地址
    public static final String BROKER_URL = "tcp://127.0.0.1:61616";
    // 目标
    public static final String DESTINATION = "test.mq.jms";
    
    
    public static void main(String[] args) throws Exception {
    	Connection conn = null;
        Session sess = null;
        try {
            // 创建链接工厂
            ConnectionFactory factory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD, BROKER_URL);
            // 通过工厂创建一个连接
            conn = factory.createConnection();
            // 启动连接
            conn.start();
            // 创建一个session会话
            sess = conn.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
            // 创建一个消息队列
            Destination dest = sess.createQueue(DESTINATION);
            // 创建消息制作者
            MessageConsumer cumer = sess.createConsumer(dest);
            
            while (true) {
                // 接收数据
                Message message = cumer.receive();
                
                TextMessage text = (TextMessage) message;
                if (text != null) {
                    System.out.println(text.getText());
                    break;
                } else {
                    break;
                }
            }
            
            // 提交会话
            sess.commit();
            
        } catch (Exception e) {
            throw e;
        } finally {
            // 关闭释放资源
            if (sess != null) {
                sess.close();
            }
            if (conn != null) {
                conn.close();
            }
        }
    }

猜你喜欢

转载自blog.csdn.net/weixin_40577289/article/details/88354333
今日推荐