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

Spring Boot整合RabbitMQ開發(fā)實(shí)戰(zhàn)詳解

 更新時(shí)間:2018年02月05日 11:24:46   作者:皂白  
這篇文章主要介紹了Spring Boot整合RabbitMQ開發(fā)實(shí)戰(zhàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

這篇文章主要講基本的整合。先把代碼跑起來,再說什么高級(jí)特性。

RabbitMQ 中的一些術(shù)語(yǔ)

如果你打開 RabbitMQ web 控制臺(tái),你會(huì)發(fā)現(xiàn)其中有一個(gè) Exhanges 不好理解。下面簡(jiǎn)單說明一下。

交換器(Exchange)

交換器就像路由器,我們先是把消息發(fā)到交換器,然后交換器再根據(jù)路由鍵(routingKey)把消息投遞到對(duì)應(yīng)的隊(duì)列。(明白這個(gè)概念很重要,后面的代碼里面充分體現(xiàn)了這一點(diǎn))

隊(duì)列(Queue)

隊(duì)列很好理解,就不用解釋了。

綁定(Binding)

交換器怎么知道把這條消息投遞到哪個(gè)隊(duì)列呢?這就需要用到綁定了。大概就是:使用某個(gè)路由鍵(routingKey)把某個(gè)隊(duì)列(Queue)綁定到某個(gè)交換器(Exchange),這樣交換器就知道根據(jù)路由鍵把這條消息投遞到哪個(gè)隊(duì)列了。(后面的代碼里面充分體現(xiàn)了這一點(diǎn))

加入 RabbitMQ maven 依賴

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

再加入另外一個(gè)依賴(這個(gè)依賴可省略,主要是用來簡(jiǎn)化代碼)

<dependency>
 <groupId>cn.hutool</groupId>
 <artifactId>hutool-all</artifactId>
 <version>4.0.2</version>
</dependency>

RabbitMQConfig.java 配置

@Configuration
public class RabbitMQConfig {

 public final static String QUEUE_NAME = "spring-boot-queue";
 public final static String EXCHANGE_NAME = "spring-boot-exchange";
 public final static String ROUTING_KEY = "spring-boot-key";

 // 創(chuàng)建隊(duì)列
 @Bean
 public Queue queue() {
 return new Queue(QUEUE_NAME);
 }

 // 創(chuàng)建一個(gè) topic 類型的交換器
 @Bean
 public TopicExchange exchange() {
 return new TopicExchange(EXCHANGE_NAME);
 }

 // 使用路由鍵(routingKey)把隊(duì)列(Queue)綁定到交換器(Exchange)
 @Bean
 public Binding binding(Queue queue, TopicExchange exchange) {
 return BindingBuilder.bind(queue).to(exchange).with(ROUTING_KEY);
 }

 @Bean
 public ConnectionFactory connectionFactory() {
 CachingConnectionFactory connectionFactory = new CachingConnectionFactory("127.0.0.1", 5672);
 connectionFactory.setUsername("guest");
 connectionFactory.setPassword("guest");
 return connectionFactory;
 }

 @Bean
 public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory) {
 return new RabbitTemplate(connectionFactory);
 }

}

生產(chǎn)者

直接調(diào)用 rabbitTemplate 的 convertAndSend 方法就可以了。從下面的代碼里也可以看出,我們不是把消息直接發(fā)送到隊(duì)列里面的,而是先發(fā)送到了交換器,交換器再根據(jù)路由鍵把我們的消息投遞到對(duì)應(yīng)的隊(duì)列。

@RestController
public class ProducerController {

 @Autowired
 private RabbitTemplate rabbitTemplate;

 @GetMapping("/sendMessage")
 public Object sendMessage() {
 new Thread(() -> {
  for (int i = 0; i < 100; i++) {
  String value = new DateTime().toString("yyyy-MM-dd HH:mm:ss");
  Console.log("send message {}", value);
  rabbitTemplate.convertAndSend(RabbitMQConfig.EXCHANGE_NAME, RabbitMQConfig.ROUTING_KEY, value);
  }
 }).start();
 return "ok";
 }

}

消費(fèi)者

消費(fèi)者也很簡(jiǎn)單,只需要對(duì)應(yīng)的方法上加入 @RabbitListener 注解,指定需要監(jiān)聽的隊(duì)列名稱即可。

@Component
public class Consumer {

 @RabbitListener(queues = RabbitMQConfig.QUEUE_NAME)
 public void consumeMessage(String message) {
 Console.log("consume message {}", message);
 }
}

運(yùn)行項(xiàng)目

運(yùn)行項(xiàng)目,然后打開瀏覽器,輸入 http://localhost:9999/sendMessage 。在控制臺(tái)就可以看到生產(chǎn)者在不停的的發(fā)送消息,消費(fèi)者不斷的在消費(fèi)消息。

打開 RabbitMQ web 控制臺(tái),也可以看到剛才我們?cè)诖a里面配置的交換器和隊(duì)列,以及綁定信息。

點(diǎn)擊進(jìn)入交換器的詳情

結(jié)語(yǔ)

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java 字符串反轉(zhuǎn)實(shí)現(xiàn)代碼

    Java 字符串反轉(zhuǎn)實(shí)現(xiàn)代碼

    這篇文章主要介紹了 Java 字符串反轉(zhuǎn)實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • Spring Boot 防止接口惡意刷新和暴力請(qǐng)求的實(shí)現(xiàn)

    Spring Boot 防止接口惡意刷新和暴力請(qǐng)求的實(shí)現(xiàn)

    本文主要介紹了Spring Boot 防止接口惡意刷新和暴力請(qǐng)求的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Spring boot 實(shí)現(xiàn)單個(gè)或批量文件上傳功能

    Spring boot 實(shí)現(xiàn)單個(gè)或批量文件上傳功能

    這篇文章主要介紹了Spring boot 實(shí)現(xiàn)單個(gè)或批量文件上傳功能,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2018-08-08
  • java中spi使用詳解

    java中spi使用詳解

    java中spi(service provider interface)是jdk內(nèi)置的一種服務(wù)發(fā)現(xiàn)機(jī)制,可以基于配置,在運(yùn)行時(shí)加載指定服務(wù)。這篇文章主要介紹了java中spi使用,需要的朋友可以參考下
    2020-09-09
  • formfile文件上傳使用示例

    formfile文件上傳使用示例

    這篇文章主要介紹了formfile文件上傳使用示例,代碼已加注釋,需要的朋友可以參考下
    2014-03-03
  • Java實(shí)現(xiàn)ECDSA簽名算法

    Java實(shí)現(xiàn)ECDSA簽名算法

    這篇文章主要介紹了Java實(shí)現(xiàn)ECDSA簽名算法,幫助大家更好得利用Java實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法,感興趣的朋友可以了解下
    2020-10-10
  • 為什么wait和notify必須放在synchronized中使用

    為什么wait和notify必須放在synchronized中使用

    這篇文章主要介紹了為什么wait和notify必須放在synchronized中使用,文章圍繞主題的相關(guān)問題展開詳細(xì)介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考以參考一下
    2022-05-05
  • Java中ArrayList和LinkedList的區(qū)別

    Java中ArrayList和LinkedList的區(qū)別

    ArrayList和LinkedList在這個(gè)方法上存在一定的性能差異,本文就介紹了Java中ArrayList和LinkedList的區(qū)別,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 通過Java組合問題看透回溯法

    通過Java組合問題看透回溯法

    今天給大家分享一道LeetCode算法題,題目不是很困難,但是從這到簡(jiǎn)單的題目我們可以分析出回溯算法的幾個(gè)核心要點(diǎn),感興趣的可以了解一下
    2022-09-09
  • Idea 快速生成方法返回值的操作

    Idea 快速生成方法返回值的操作

    這篇文章主要介紹了Idea 快速生成方法返回值的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02

最新評(píng)論

保德县| 霍邱县| 石渠县| 祥云县| 唐河县| 得荣县| 宁波市| 石屏县| 富顺县| 温州市| 巢湖市| 富裕县| 珠海市| 阿拉尔市| 福海县| 乌兰县| 呼和浩特市| 庆元县| 楚雄市| 梁平县| 兴化市| 固安县| 金溪县| 保德县| 通渭县| 宜良县| 东山县| 天峻县| 遂平县| 拜泉县| 贵定县| 梅河口市| 大庆市| 新丰县| 武威市| 金溪县| 上思县| 昌平区| 桃江县| 木里| 鲁甸县|