activetyMQ入門瞭解

第一步是:下載activityMQ的壓縮包http://activemq.apache.org/activemq-5156-release.html

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

雙擊activitymq.bat

然後打開http://localhost:8161/admin/ 用戶名和密碼默認都默認爲admin,直接輸入登錄。

然後繼續打開http://localhost:8161/admin/queues.jsp 可以看到消息的隊列請求和處理情況。

接下來創建兩個類,發送和接收消息的類,在創建類之前,先導入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);
        }
    }

}

 

完成以上工作,先執行sender類,在執行Receiver類,然後到http://localhost:8161/admin/queues.jsp可以查看消息的請求和處理情況。

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

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章