国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

Spring Boot基于Active MQ實現整合JMS

瀏覽:20日期:2023-08-30 10:40:22

我們使用jms一般是使用spring-jms和activemq相結合,通過spring Boot為我們配置好的JmsTemplate發送消息到指定的目的地Destination。本文以點到點消息模式為例,演示如何在Spring Boot中整合 JMS 和 Active MQ ,實現 MQ 消息的生產與消費。

點到點消息模式定義:當消息發送者發送消息,消息代理獲得消息后,把消息放入一個隊列里,當有消息接收者來接收消息的時候,消息將從隊列里取出并且傳遞給接收者,這時候隊列里就沒有此消息了。隊列Queue的存在使得消息的異步傳輸成為可能。

Spring Boot基于Active MQ實現整合JMS

1 安裝ActiveMQ

關于具體的安裝步驟,請參考專門介紹安裝與部署的另一篇博文《ActiveMQ安裝及部署教程圖解》。

2 配置Active MQ 依賴

關于如何搭建 Spring Boot工程,請移步《如何使用intellij IDEA搭建Spring Boot項目》。假設項目已經創建完畢,在項目 pom 文件中加入Active MQ依賴:

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId> <version>2.2.7.RELEASE</version></dependency>

3 修改application.properties配置文件

在application.properties中配置Active MQ:

spring.activemq.broker-url=tcp://localhost:61616spring.activemq.in-memory=truespring.activemq.pool.enabled=false#默認值false,表示點到點模式,true時代表發布訂閱模式spring.jms.pub-sub-domain=false

4 創建消息生產者和消費者

本文以點到點消息模式演示。新增消息生產者:

import org.springframework.beans.factory.annotation.Autowired;import org.springframework.jms.core.JmsMessagingTemplate;import org.springframework.stereotype.Service;import javax.jms.Destination;@Service('producer')public class Producer { /** * 也可以注入JmsTemplate,JmsMessagingTemplate對JmsTemplate進行了封裝 */ @Autowired private JmsMessagingTemplate jmsTemplate; /** * 發送消息,destination是發送到的隊列,message是待發送的消息 * * @param destination * @param message */ public void sendMessage(Destination destination, final String message) { jmsTemplate.convertAndSend(destination, message); }}

通過JmsMessagingTemplate 的convertAndSend方法向目的地 destination發送消息。 新增消息監聽者:

import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.jms.annotation.JmsListener;import org.springframework.stereotype.Component;@Componentpublic class ConsumerListener { private static Logger logger = LoggerFactory.getLogger(Consumer.class); /** * 使用JmsListener配置消費者監聽的隊列 * @param receivedMsg 接收到的消息 */ @JmsListener(destination = 'myDest.queue') public void receiveQueue(String receivedMsg) { logger.info('Consumer收到的報文為: {}', receivedMsg); }}

@JmsListener是Spring 4.1 提供的一個新特性,用于簡化JMS開發,只需使用此注解的屬性destination指定要監聽的目的地【myDest.queue】,即可接收該目的地發送的消息。消費者2 ConsumerListener2 的代碼同上,但是日志如下:

logger.info('Consumer2收到的報文為: {}', receivedMsg);

溫馨提示,消息消費者和生產者的類上必須加上注解 @Component 或者 @Service,使得消息消費者類就會被委派給Listener類,原理類似于使用SessionAwareMessageListener以及MessageListenerAdapter來實現消息驅動POJO。

5 測試 MQ

在Junit測試類中新增測試方法

import org.apache.activemq.command.ActiveMQQueue;import javax.jms.Destination;@Autowiredprivate Producer producer;@Testpublic void jmsActiveMqTest() throws InterruptedException { Destination destination = new ActiveMQQueue('myDest.queue'); for (int i = 0; i < 21; i++) { producer.sendMessage(destination, String.format('My name is Wiener%s', i)); }}

控制臺顯示消費者接收到的消息如下:

Consumer收到的報文為: My name is Wiener0Consumer2 收到的報文為:My name is Wiener1Consumer收到的報文為: My name is Wiener2Consumer2 收到的報文為:My name is Wiener3Consumer收到的報文為: My name is Wiener4Consumer2 收到的報文為:My name is Wiener5Consumer收到的報文為: My name is Wiener6Consumer2 收到的報文為:My name is Wiener7...

經過上面的五個步驟,spring Boot、Jms 和 Active MQ 就基本上整合完成了,是不是使用起來很方便了!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
主站蜘蛛池模板: aaa国产一级毛片 | 成年女人毛片免费播放人 | 毛片免费高清免费 | 国产aaaaa一级毛片 | 午夜性福利 | 欧美在线观看视频一区 | 91四虎国自产在线播放线 | 一级做a爰片性色毛片中国 一级做a爰性色毛片 | 国产成人精品无缓存在线播放 | 欧美高清亚洲欧美一区h | 久草热线视频 | 欧美成人在线观看 | 亚洲精品视频区 | 精品国产乱码久久久久久一区二区 | 91亚洲精品一区二区在线观看 | 99欧美精品| 免费国产一级 | 日本aaaa级| 精品欧美一区二区在线看片 | 亚洲精品一区二区三区四 | 国产成人a毛片 | 成人免费午间影院在线观看 | 欧美ⅹxxxx视频 | 国产网友自拍 | 高清国产精品久久久久 | 亚洲久久久久久久 | 国产热久久精 | 成人区视频爽爽爽爽爽 | 日本美女视频韩国视频网站免费 | 精品三级国产 | 真实国产乱人伦在线视频播放 | 免费观看欧美精品成人毛片 | 日韩欧美一区二区三区免费观看 | 亚洲 欧美 日韩中文字幕一区二区 | 毛片的网址 | 女人张开腿让男人桶免费网站 | 久久草在线视频免费 | 午夜三级理论在线观看视频 | 国产欧美一区视频在线观看 | 国产精品亚洲一区二区在线观看 | 久久www免费人成看国产片 |