亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringBoot基于Active MQ整合JMS的方法

發布時間:2020-07-02 14:32:05 來源:億速云 閱讀:328 作者:清晨 欄目:開發技術

不懂SpringBoot基于Active MQ整合JMS的方法?其實想解決這個問題也不難,下面讓小編帶著大家一起學習怎么去解決,希望大家閱讀完這篇文章后大所收獲。

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

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

SpringBoot基于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:61616
spring.activemq.in-memory=true
spring.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;

@Component
public 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;

@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 就基本上整合完成了,是不是使用起來很方便了!

感謝你能夠認真閱讀完這篇文章,希望小編分享SpringBoot基于Active MQ整合JMS的方法內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鸡泽县| 城市| 楚雄市| 明溪县| 崇礼县| 肥乡县| 开江县| 双辽市| 台南县| 乐业县| 衢州市| 泽普县| 乌兰浩特市| 鄱阳县| 嵩明县| 岢岚县| 株洲市| 定安县| 吉林省| 山阴县| 虞城县| 博兴县| 盐亭县| 乐山市| 余江县| 监利县| 建阳市| 建昌县| 崇文区| 年辖:市辖区| 彩票| 宜宾市| 涡阳县| 山阴县| 黄梅县| 岫岩| 巴中市| 泰和县| 庆城县| 射阳县| 酒泉市|