ActiveMQ入門級 + 後臺向前臺傳遞消息,包括前臺接收消息

廢話不多說!

Spring+ActiveMQ 的代碼包在這裏 點擊打開鏈接    http://download.csdn.net/download/qq_29080941/10249355

1. 首先下載ActiveMQ服務。本次用的是5.9版本 http://activemq.apache.org/download-archives.html 點擊打開鏈接

    標紅的activemq-all-5.9.0.jar包是後面代碼需要的jar包。


2. 安裝完之後打開bin目錄,根據自己系統位數 -> 啓動服務  activemq.bat


3.   啓動完成後的界面是這樣的


4. 訪問 localhost:8161/admin 進入ActiveMQ管理界面  賬號密碼默認都是admin


5. 登錄進去可以看到  Queue 代表的隊列裏的消息消費情況   Topic 代表訂閱/發送的消息消費情況


6.  到寫代碼了:

    創建一個項目,把activeMQ目錄裏的jar文件拷到lib下  

    

    創建JMSProducer.java :裏面註釋了很多內容  有講解  也有其他測試代碼

public class JMSProducer {

 //發送的消息數量
    private static final int SENDNUM = 10;

public static void main(String[] args){
ConnectionFactory connectionFactory;
//實例化連接工廠
        connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.1.214:61616");
Connection connection = null;
Session session = null;
Destination destination = null;
MessageProducer producer = null;
try {
connection = connectionFactory.createConnection();
//啓動鏈接
connection.start();
/*
 * connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
 * 1、true:支持事務


爲true時:paramB的值忽略, acknowledgment mode被jms服務器設置爲SESSION_TRANSACTED 。  

2、false:不支持事務 

爲false時:paramB的值可爲Session.AUTO_ACKNOWLEDGE、Session.CLIENT_ACKNOWLEDGE、DUPS_OK_ACKNOWLEDGE其中一個。

1、Session.AUTO_ACKNOWLEDGE:爲自動確認,客戶端發送和接收消息不需要做額外的工作。

2、Session.CLIENT_ACKNOWLEDGE:爲客戶端確認。客戶端接收到消息後,必須調用javax.jms.Message的acknowledge方法。jms服務器纔會刪除消息。 

3、DUPS_OK_ACKNOWLEDGE:允許副本的確認模式。一旦接收方應用程序的方法調用從處理消息處返回,會話對象就會確認消息的接收;而且允許重複確認。在需要考慮資源使用時,這種模式非常有效。

4、SESSION_TRANSACTED
 */
session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
//創建主題   信息存放地  前臺接收的時候也要一致
destination = session.createQueue("ceshi");
// destination = session.createTopic("MyTopic");

//創建發送者對象
producer = session.createProducer(destination);

//設置持久化    PERSISTENT持久化   NON_PERSISTENT非持久化
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
//發送消息
sendMessage(session, producer);

/*  這裏註釋掉了  由下面靜態方法發送消息的內容

                        //創建消息

textMessage = session.createTextMessage("abc");
//發送

producer.send(textMessage);*/

                        //  提交session   關閉連接

session.commit();
session.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}

}

 /**
     * 發送消息
     * @param session
     * @param messageProducer  消息生產者
     * @throws Exception
     */
    public static void sendMessage(Session session,MessageProducer messageProducer) throws Exception{
        for (int i = 0; i < 1; i++) {
            //創建一條文本消息 
            TextMessage message = session.createTextMessage("下班通知" +i);
            System.out.println("發送消息:Activemq 發送消息" + i);
            //通過消息生產者發出消息 
            messageProducer.send(message);
        }
    }
}
--------------------------

7.  在頁面上用的stomp.js 來接受消息

    引入stomp.js

    <script type="text/javascript">
     var url = "ws://localhost:61614/stomp"; 
     var login = "admin";
     var passcode = "admin";
     //監聽的隊列
     //需要和發送者的發送的隊列名稱一致否則無法接受到數據
     destination = "ceshi";
     client = Stomp.client(url);
     var onconnect = function(frame) {
       client.subscribe(destination, function(message) {
          console.log(message.body);
              alert(message.body);        
       });
     };
     client.connect(login, passcode, onconnect);
    </script>

---------------------------------
好了 ,這樣就可以運行JMSProducer.java 發送消息   並且在前臺頁面接收到消息了  快試一下吧。


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