ActiveMQ的使用及整合spring的使用例項
ActiveMQ的主要使用步驟
主要講述的是使用的一些步驟,關於兩種訊息不提供解釋。
資訊生產者
/**
* 傳送點對點的訊息
* @throws Exception
*/
public void sendQueueTest() throws Exception{
//第一步:建立ActiveMQConnectionFactory物件,需要指定服務端ip及埠號。
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.1.123:61616");
//第二步:使用ConnectionFactory物件建立一個Connection物件。
Connection connection = connectionFactory.createConnection();
//第三步:開啟連線,呼叫Connection物件的start方法。
connection.start();
//第四步:使用Connection物件建立一個Session物件。
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//第五步:使用Session物件建立一個Destination物件(topic、queue),此處建立一個Queue物件。
Queue queue = session.createQueue("test-queue");
//第六步:使用Session物件建立一個Producer物件。
MessageProducer producer = session.createProducer(queue);
//第七步:建立一個Message物件,建立一個TextMessage物件。
TextMessage message = session.createTextMessage("測試訊息");
//第八步:使用Producer物件傳送訊息。
producer.send(message);
//第九步:關閉資源
producer.close();
session.close();
connection.close();
}
/**
* 釋出訊息
* @throws Exception
*/
public void sendTopicTest() throws Exception{
//第一步:建立ActiveMQConnectionFactory物件,需要指定服務端ip及埠號。
ConnectionFactory ConnectionFactory = new ActiveMQConnectionFactory("tcp://192.168.191.4:61616");
//第二步:使用ConnectionFactory物件建立一個Connection物件。
Connection connection = ConnectionFactory.createConnection();
//第三步:開啟連線,呼叫Connection物件的start方法。
connection.start();
//第四步:使用Connection物件建立一個Session物件。
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//第五步:使用Session物件建立一個Destination物件(topic、queue),此處建立一個Topic物件。
Topic topic = session.createTopic("Dai-Topic");
//第六步:使用Session物件建立一個Producer物件。
MessageProducer producer = session.createProducer(topic);
//第七步:建立一個Message物件,建立一個TextMessage物件。
TextMessage message = session.createTextMessage("test1_dai-Topic");
//第八步:使用Producer物件傳送訊息。
producer.send(message);
//第九步:關閉資源
producer.close();
session.close();
connection.close();
}
資訊的接受者
/**
* 接收點對點的訊息
* @throws Exception
*/
public void getQueueTest() throws Exception {
//消費者:接收訊息。
//第一步:建立一個ConnectionFactory物件。
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.1.123:61616");
//第二步:從ConnectionFactory物件中獲得一個Connection物件。
Connection connection = connectionFactory.createConnection();
//第三步:開啟連線。呼叫Connection物件的start方法。
connection.start();
//第四步:使用Connection物件建立一個Session物件。
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//第五步:使用Session物件建立一個Destination物件。和傳送端保持一致queue,並且佇列的名稱一致。
Queue queue = session.createQueue("test-queue");
//第六步:使用Session物件建立一個Consumer物件。
MessageConsumer consumer = session.createConsumer(queue);
//第七步:接收訊息。
consumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
TextMessage textMessage = (TextMessage) message;
//第八步:列印訊息。
try {
System.out.println(textMessage.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
});
System.in.read();
//第九步:關閉資源
consumer.close();
session.close();
connection.close();
}
/**
* 訂閱訊息
* @throws Exception
*/
public void getTopicTest() throws Exception {
//消費者:接收訊息。
//第一步:建立一個ConnectionFactory物件。
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.191.4:61616");
//第二步:從ConnectionFactory物件中獲得一個Connection物件。
Connection connection = connectionFactory.createConnection();
//第三步:開啟連線。呼叫Connection物件的start方法。
connection.start();
//第四步:使用Connection物件建立一個Session物件。
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//第五步:使用Session物件建立一個Destination物件。和傳送端保持一致Topic。
Topic topic = session.createTopic("Dai-Topic");
//第六步:使用Session物件建立一個Consumer物件。
MessageConsumer consumer = session.createConsumer(topic);
//第七步:接收訊息。
consumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
TextMessage textMessage = (TextMessage)message;
try {
System.out.println("接收到訊息是:"+textMessage.getText().toString());
} catch (JMSException e) {
e.printStackTrace();
}
}
});
System.in.read();
//第九步:關閉資源
consumer.close();
session.close();
connection.close();
}
整合spring後的使用(配置檔案略)
資訊生產者
//JMS提供的ActiveMq的工具類
@Autowired
private JmsTemplate jmsTemplate;
//這個是釋出/訂閱模式
@Resource
private Destination topicDestination;
//將新增商品的訊息新增到佇列
jmsTemplate.send(topicDestination, new MessageCreator() {
@Override
public Message createMessage(Session session) throws JMSException {
return session.createTextMessage(itemID + "");
}
});
資訊的接受者
/**
* 訊息佇列的監聽器
* @author adrain
*
*/
public class SearchMessageListener implements MessageListener {
@Autowired
private SearchItemService searchItemService;
@Override
public void onMessage(Message message) {
try {
if(message instanceof TextMessage){
TextMessage textMessage = (TextMessage) message;
String itemId = textMessage.getText();
Thread.sleep(1000);
searchItemService.addDocument(Long.parseLong(itemId));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
相關文章
- ActiveMq整合SpringMQSpring
- Spring與ActiveMQ整合SpringMQ
- JSTL的標籤及使用,包含例項JS
- Spring Boot 整合 FreeMarker 例項Spring Boot
- Dozer的使用: 整合SpringSpring
- cut命令的使用例項
- Mybatis 的使用(整合Spring、SpringBoot)MyBatisSpring Boot
- 在 Kubernetes 上使用Spring Boot+ActiveMQSpring BootMQ
- guava之ImmutableMap使用例項及好處Guava
- 【Spring Boot架構】整合Mybatis-Plus的例項詳解Spring Boot架構MyBatis
- spring+redis的整合,使用spring-data-redis來整合SpringRedis
- Spring Cache + Caffeine的整合與使用Spring
- 整合環信IM SDK及使用注意事項
- msfvenom使用例項
- pinctrl使用例項
- expect使用例項
- Tee命令的幾個使用例項
- Linux 中 ss 命令的使用例項Linux
- Linux 中的 JQ 命令使用例項Linux
- Linux中ip命令的使用例項Linux
- Linux中的basename命令使用例項Linux
- Spring原始碼分析(六)SpringAOP例項及標籤的解析Spring原始碼
- Dubbo原始碼分析(一)Dubbo與Spring整合例項原始碼Spring
- vue例項中watch屬性的使用Vue
- 使用 vue 例項更好的監聽事件Vue事件
- tunna工具使用例項
- awk命令使用例項
- restorecon 命令使用例項REST
- Tee命令使用例項
- spring boot使用註解的方式整合mybaitsSpring BootAI
- 使用Spring Boot整合ConsulSpring Boot
- 分享一個Laravel中的管道的使用例項Laravel
- Spring Cloud使用樣例SpringCloud
- NLP-隱馬爾可夫模型及使用例項隱馬爾可夫模型
- Exchanger的工作原理及例項
- python中time庫的例項使用方法Python
- 管理 Windows 例項的高效方法 —— 使用 WindowExtensions 類Windows
- Linux系統中的basename命令使用例項Linux