ActiveMQ點對點的發送和接收


最近在工作中用到了ActiveMQ的點對點模式,在此用一個范例簡單描述下使用過程。

1.首先在工程導入ActiveMQ的jar包,此jar包在下載的ActiveMQ資源里,這里用的是ActiveMQ版本是5.9。

 

2.編寫消息發送者

package com.cool.jms;

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

/**
 *  消息生產者
 * Created by hejin on 2017/4/12 0012.
 */
public class JMSProducer {

    //默認連接用戶名
    private static final String USER= ActiveMQConnection.DEFAULT_USER;
    //默認連接密碼
    private static final String PASSWORD=ActiveMQConnection.DEFAULT_PASSWORD;
    //默認連接地址
    private static final String URL=ActiveMQConnection.DEFAULT_BROKER_URL;
    //發送的消息數量
    private static final int SENDNUM=10;

    public static void main(String[] args) throws JMSException {
        //連接工廠
        ConnectionFactory connectionFactory;
        //連接
        Connection connection;
        //會話(接收或發送消息的線程)
        Session session;
        //消息目的地
        Destination destination;
        //消息生產者
        MessageProducer messageProducer;
        //實例化連接工廠
        connectionFactory=new ActiveMQConnectionFactory(JMSProducer.USER,JMSProducer.PASSWORD,JMSProducer.URL);


        try {
            //通過連接工廠獲取連接
            connection = connectionFactory.createConnection();
            //啟動連接
            connection.start();
            //創建session
            session=connection.createSession(true,Session.AUTO_ACKNOWLEDGE);
            //創建一個名稱為HelloWorld的消息隊列
            destination= session.createQueue("HelloWorld");
            //創建消息生產者
            messageProducer = session.createProducer(destination);
            //發送消息
            sendMessage(session,messageProducer);
            //提交
            session.commit();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    public static void sendMessage(Session session,MessageProducer messageProducer) throws Exception{
        for (int i=0;i<JMSProducer.SENDNUM;i++){
            //創建需要發送的消息
            TextMessage message = session.createTextMessage("ActiveMQ發送消息:" + i);
            System.out.println("ActiveMQ發送消息:"+i);
            messageProducer.send(message);
        }
    }
}

  

執行上面的代碼控制台輸出

在瀏覽器訪問MQ的頁面:http://127.0.0.1:8161/admin/queues.jsp,可以查看發送的隊列的消息信息。

消息詳情:

 

3.編寫消費package com.cool.jms;

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

/**
 * Created by hejin on 2017/4/12 0012.
 */
public class JMSConsumer {
    //默認連接名稱
    private static  String USER= ActiveMQConnection.DEFAULT_USER;
    //默認密碼
    private static  String PASSWORD=ActiveMQConnection.DEFAULT_PASSWORD;
    //默認連接地址
    private static String URL=ActiveMQConnection.DEFAULT_BROKER_URL;

    public static void main(String[] args) {
       //連接工廠
        ConnectionFactory connectionFactory;
        //連接
        Connection connection;
        //會話 接收或發送消息的進程
        Session session;
        //消息的目的地
        Destination destination;
        //消息的消費者
        MessageConsumer messageConsumer;

        //實例化連接工廠
        connectionFactory=new ActiveMQConnectionFactory(JMSConsumer.USER,JMSConsumer.PASSWORD,JMSConsumer.URL);

        //IDEA快速捕獲異常快捷鍵:Ctrl+Alt+T
        try {
            //通過連接工廠獲取連接
            connection=connectionFactory.createConnection();
            //啟動連接
            connection.start();
            //創建session
            session=connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
            //創建一個HelloWorld的消息隊列
            destination=session.createQueue("HelloWorld");
            //創建消息消費者
            messageConsumer = session.createConsumer(destination);

            while(true){
                TextMessage message = (TextMessage) messageConsumer.receive(100000);
                if(message!=null){
                    System.out.println("收到的消息:"+message.getText());
                }else{
                    break;
                }
            }
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }
}

控制台輸出:



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM