廢話不多說!
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.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>
--------------------------------- |