1. 程式人生 > >activetyMQ入門瞭解

activetyMQ入門瞭解

第二步是:解壓下載的壓縮包,進入檔案中開啟bin資料夾,並根據window的版本,選擇32位還是64位的資料夾activitymq.bat

雙擊activitymq.bat

接下來建立兩個類,傳送和接收訊息的類,在建立類之前,先匯入activityMQ需要的jar包

在壓縮包的中有個jar包,直接匯入就完成了

下面是要建立的連個類

接收類Receiver:

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

import javax.jms.*;

/**
 *
 *
 * 類名稱:Receiver
 * 類描述:  activeMQ接收類
 * 建立時間:2018年10月6日 上午19:31:35
 * 修改人:
 * 修改時間:
 * 修改備註:
 * @version
 *
 */
public class Receiver {
    public static void main(String[] args) {

        //connectionFactory 連線工廠,JMS用它建立連線
        ConnectionFactory connectionFactory;
        //connection JMS客戶端到JMS provider 的連線
        Connection connection = null;
        //session一個傳送或者接收的執行緒
        Session session;
        //destination 訊息目的地,傳送給誰接收
        Destination destination;
        //消費者訊息接收者
        MessageConsumer consumer;

        connectionFactory = new ActiveMQConnectionFactory(
//                ActiveMQConnection.DEFAULT_USER,
//                ActiveMQConnection.DEFAULT_PASSWORD,
                "admin",
                "admin",
                "tcp://localhost:61616");

        try {
            //構造工廠得到連線物件
            connection = connectionFactory.createConnection();
            //啟動
            connection.start();
            //獲取操作連線
            session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);
            destination = session.createQueue("FirstQueue");
            consumer = session.createConsumer(destination);
            while(true){
                //設定接收者收訊息的時間,為了方便測試,這裡暫定設定為100s
                TextMessage message = (TextMessage)consumer.receive(100);
                if(null != message){
                    System.out.println("收到訊息==="+message.getText());
                }else{
                    break;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            try {
                if(null != connection){
                    connection.close();
                }
            } catch (Throwable ignore) {
            }
        }
    }
}

傳送類 sender:

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

import javax.jms.*;

/**
 *
 *
 * 類名稱:Sender
 * 類描述:   ActiveMQ傳送者
 * 建立時間:2018年10月6日 上午19:01:02
 * 修改人:
 * 修改時間:
 * 修改備註:
 * @version
 *
 */
public class Sender {

    private static final int SEND_NUMBER = 10;

    public static void main(String[] args) {

        //ConnectionFactory是連線工廠,JMS用它建立連線
        ConnectionFactory connectionFactory;
        //Connection JMS客戶端到JMS provider的連線
        Connection connection = null;
        //Session 一個傳送或者接收訊息的執行緒
        Session session;
        //Destination 訊息傳送目的地,訊息傳送給誰接收
        Destination destination;
        //MessageProducer 訊息傳送者
        MessageProducer messageProducer;
        //構造ConnectionFactory 例項物件,此處採用ActiveMQ的實現jar
        connectionFactory = new ActiveMQConnectionFactory(
//                ActiveMQConnection.DEFAULT_USER,
//                ActiveMQConnection.DEFAULT_PASSWORD,
                "admin",
                "admin",
                "tcp://localhost:61616");

        try {
            //構造工廠得到連線物件
            connection = connectionFactory.createConnection();
            //啟動
            connection.start();
            //獲取操作連線
            session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
            //建立一個Queue,名稱為SongLiGuo_FirstQueue
            destination = session.createQueue("FirstQueue");
            //得到訊息生產者【傳送者】
            messageProducer = session.createProducer(destination);
            //設定不持久化,根據實際情況而定
            messageProducer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
            //構造訊息,此處寫死,專案就是引數或者方法獲取
            sendMessage(session, messageProducer);
            session.commit();
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            try {
                if(null != connection){
                    connection.close();
                }
            } catch (Throwable ignore) {
            }
        }
    }

    public static void sendMessage(Session session, MessageProducer producer)throws Exception {
        for (int i = 1; i <= SEND_NUMBER; i++) {
            TextMessage message = session.createTextMessage("ActiveMq 傳送的訊息" + i);
            // 傳送訊息到目的地方
            System.out.println("傳送訊息:" + "ActiveMq 傳送的訊息" + i);
            producer.send(message);
        }
    }

}

以上就算是activityMQ的入門瞭解吧