最近在工作中用到了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();
}
}
}
控制台輸出:
