最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring Boot基于Active MQ實現(xiàn)整合JMS

 更新時間:2020年07月02日 11:40:28   作者:樓蘭的胡楊  
這篇文章主要介紹了Spring Boot基于Active MQ實現(xiàn)整合JMS,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

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

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

1 安裝ActiveMQ

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

2 配置Active MQ 依賴

關于如何搭建 Spring Boot工程,請移步《如何使用intellij IDEA搭建Spring Boot項目》。假設項目已經創(chuàng)建完畢,在項目 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:61616
spring.activemq.in-memory=true
spring.activemq.pool.enabled=false
#默認值false,表示點到點模式,true時代表發(fā)布訂閱模式
spring.jms.pub-sub-domain=false

4 創(chuàng)建消息生產者和消費者

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

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;

 /**
  * 發(fā)送消息,destination是發(fā)送到的隊列,message是待發(fā)送的消息
  *
  * @param destination
  * @param message
  */
 public void sendMessage(Destination destination, final String message) {
  jmsTemplate.convertAndSend(destination, message);
 }
}

通過JmsMessagingTemplate 的convertAndSend方法向目的地 destination發(fā)送消息。 新增消息監(jiān)聽者:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;

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

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

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

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

5 測試 MQ

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

import org.apache.activemq.command.ActiveMQQueue;
import javax.jms.Destination;

@Autowired
private Producer producer;
@Test
public 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 Wiener0
Consumer2 收到的報文為:My name is Wiener1
Consumer收到的報文為: My name is Wiener2
Consumer2 收到的報文為:My name is Wiener3
Consumer收到的報文為: My name is Wiener4
Consumer2 收到的報文為:My name is Wiener5
Consumer收到的報文為: My name is Wiener6
Consumer2 收到的報文為:My name is Wiener7
...

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

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

相關文章

  • Java倒計時三種實現(xiàn)方式代碼實例

    Java倒計時三種實現(xiàn)方式代碼實例

    這篇文章主要介紹了Java倒計時三種實現(xiàn)方式代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • SpringBoot?AOP中JoinPoint的使用方式和通知切點表達式

    SpringBoot?AOP中JoinPoint的使用方式和通知切點表達式

    這篇文章主要介紹了SpringBoot?AOP中JoinPoint的使用方式和通知切點表達式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Java長度不足左位補0的3種實現(xiàn)方法

    Java長度不足左位補0的3種實現(xiàn)方法

    這篇文章主要介紹了Java長度不足左位補0的3種實現(xiàn)方法小結,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 使用java一維數組模擬壓棧彈棧

    使用java一維數組模擬壓棧彈棧

    這篇文章主要介紹了如何使用java一維數組模擬壓棧彈棧,需要的朋友可以參考下
    2021-04-04
  • Java 調用Restful API接口的幾種方式(HTTPS)

    Java 調用Restful API接口的幾種方式(HTTPS)

    這篇文章主要介紹了Java 調用Restful API接口的幾種方式(HTTPS),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • Java繼承構造器使用過程解析

    Java繼承構造器使用過程解析

    這篇文章主要介紹了Java繼承構造器使用過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • VsCode搭建Java開發(fā)環(huán)境的方法

    VsCode搭建Java開發(fā)環(huán)境的方法

    這篇文章主要介紹了VsCode搭建Java開發(fā)環(huán)境的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • java 調用本地揚聲器的步驟

    java 調用本地揚聲器的步驟

    博主的畢設系統(tǒng)在做一個餐廳的點餐管理系統(tǒng),在進行移動端頁面開發(fā)的時候突發(fā)奇想做一個呼叫功能,因此就有了這篇文章
    2021-05-05
  • Java通過socket客戶端保持連接服務端實現(xiàn)代碼

    Java通過socket客戶端保持連接服務端實現(xiàn)代碼

    這篇文章主要介紹了Java通過socket客戶端保持連接服務端實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • java操作oracle數據庫示例

    java操作oracle數據庫示例

    這篇文章主要介紹了java操作oracle數據庫示例,需要的朋友可以參考下
    2014-04-04

最新評論

淳安县| 新巴尔虎右旗| 南汇区| 昌黎县| 永和县| 五常市| 新民市| 平顺县| 定兴县| 永和县| 石门县| 逊克县| 宁海县| 宾川县| 平阴县| 贵德县| 交城县| 千阳县| 鄂温| 郸城县| 青岛市| 图片| 泾阳县| 日土县| 肥东县| 永城市| 安宁市| 二手房| 吴桥县| 英超| 巴南区| 新乡县| 广饶县| 克什克腾旗| 潮州市| 滨海县| 墨江| 沁源县| 罗城| 武平县| 淮阳县|