欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

springboot整合消息隊列RabbitMQ

 更新時間:2022年08月30日 16:18:40   作者:苦糖????????  
這篇文章主要介紹了springboot整合消息隊列RabbitMQ,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下

前言:

RabbitMQ常用的三種Exchange Type:fanout、direct、topic。

  • fanout:把所有發(fā)送到該Exchange的消息投遞到所有與它綁定的隊列中。
  • direct:把消息投遞到那些binding key與routing key完全匹配的隊列中。
  • topic:將消息路由到binding key與routing key模式匹配的隊列中。

這里基于springboot整合? ?消息隊列??,測試這三種Exchange。

  • 啟動RabbitMQ

雙擊運行rabbitmq-server.bat:

  • SpringBoot整合RabbitMQ——Direct模式(默認模式)

創(chuàng)建springboot web項目——發(fā)送者springboot-sender

追加測試和rabbitmq所需的依賴:

<!-- 添加springboot對amqp的支持 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<!--添加測試包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-test</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.0.9.RELEASE</version>
</dependency>

修改配置文件application.yml  application.properties:

server:
port: 7001
spring:
application:
name: spirngboot-sender
rabbitmq:
host: 127.0.0.1
port: 5672
username: guest
password: guest

發(fā)送的信息可以是基本數(shù)據(jù)類型也可以是對象,這里創(chuàng)建一個用戶對象

public class User implements Serializable{
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}

創(chuàng)建一個配置類:SenderConfiguration.java

一個名為queue1 隊列

@Configuration
public class SenderConfiguration {
@Bean
public Queue directQueue() {
return new Queue("queue1");
}
}

創(chuàng)建一個發(fā)送信息類:SenderService.java

發(fā)送user對象給queue1隊列

@Component
public class SenderService {
@Autowired
private AmqpTemplate template;

public void sendUser() {
User user=new User();
user.setUsername("張三");
user.setPassword("123456");
template.convertAndSend("queue1",user);
}
}

創(chuàng)建一個測試類:TestRabbitMQ.java

@SpringBootTest(classes=SpringbootSenderApplication.class)
@RunWith(SpringJUnit4ClassRunner.class)
public class TestRabbitMQ {
@Autowired
private SenderService senderService;

@Test
public void testRabbit() {
senderService.sendUser();
}
}

運行testRabbit方法:

創(chuàng)建springboot web項目——接收者springboot-receiver

修改配置文件application.yml  application.properties:

server:
port: 7002
spring:
application:
name: spirngboot-receiver
rabbitmq:
host: 127.0.0.1
port: 5672
username: guest
password: guest

添加接收類:ReceiverService.java

@Component
public class ReceiverService {
@RabbitListener(queues="queue1")
public void receiveUser(User user) {
System.out.println("username:"+user.getUsername()+" password:"+user.getPassword());
}
}

運行啟動類:SpringbootApplication.java,結果:

信息成功被接收。

SpringBoot整合RabbitMQ——Topic模式(模糊匹配)

步驟與Direct差不多。

發(fā)送者:

修改配置類SenderConfiguration.java:

創(chuàng)建兩個隊列 topic1,topic2,創(chuàng)建一個topic交換器,綁定交換機和隊列以及綁定規(guī)則

@Test
public void testRabbit() {
senderService.sendUser();
}@Bean(name="topic1")
public Queue topicQueue1() {
return new Queue("topic1");
}
@Bean(name="topic2")
public Queue topicQueue2() {
return new Queue("topic2");
}

@Bean
public TopicExchange exchange() {
//創(chuàng)建一個topic交換器
return new TopicExchange("topicExchange");
}
@Bean
Binding bindingExchangeTopic1(@Qualifier("topic1") Queue queueMessage, TopicExchange exchange) {
//設置topic1綁定規(guī)則
return BindingBuilder.bind(queueMessage).to(exchange).with("topic.queue");
}
@Bean
Binding bindingExchangeTopic2(@Qualifier("topic2") Queue queueMessages, TopicExchange exchange) {
//設置topic2綁定規(guī)則 *表示一個詞,#表示零個或多個詞
return BindingBuilder.bind(queueMessages).to(exchange).with("topic.#");
}

修改發(fā)送類SenderService.java

User user=new User();
user.setUsername("張三");
user.setPassword("123456");
//發(fā)送給topicExchange的交換機
template.convertAndSend("topicExchange","topic.queue",user);
template.convertAndSend("topicExchange","topic.anyting",user);

運行testRabbit方法:

成功廣播出去兩條信息

接收者:

修改接收類ReceiverService.java

@RabbitListener(queues="fanout1")
public void receiveFanout1(User user) {
System.out.println("隊列:fanout1 username:"+user.getUsername()+" password:"+user.getPassword());
}
@RabbitListener(queues="fanout2")
public void receiveFanout2(User user) {
System.out.println("隊列:fanout2 username:"+user.getUsername()+" password:"+user.getPassword());
}

運行啟動類,結果:

消息成功被發(fā)送接收

到此這篇關于springboot整合消息隊列RabbitMQ的文章就介紹到這了,更多相關springboot整合RabbitMQ內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java Scanner的使用和hasNextXXX()的用法說明

    Java Scanner的使用和hasNextXXX()的用法說明

    這篇文章主要介紹了Java Scanner的使用和hasNextXXX()的用法說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 利用Java編寫個"不貪吃蛇"小游戲

    利用Java編寫個"不貪吃蛇"小游戲

    貪吃蛇大家一定有玩過了吧,今天小編給大家?guī)睃c不一樣的。本文將用Java編寫一個"不貪吃蛇"小游戲,感興趣的小伙伴可以動手嘗試一下
    2022-08-08
  • Java線程安全中的單例模式

    Java線程安全中的單例模式

    這篇文章主要介紹了Java線程安全中的單例模式,需要的朋友可以參考下
    2015-02-02
  • Java開發(fā)框架spring實現(xiàn)自定義緩存標簽

    Java開發(fā)框架spring實現(xiàn)自定義緩存標簽

    這篇文章主要介紹了Java開發(fā)框架spring實現(xiàn)自定義緩存標簽的詳細代碼,感興趣的小伙伴們可以參考一下
    2015-12-12
  • Java中的魔法類:sun.misc.Unsafe示例詳解

    Java中的魔法類:sun.misc.Unsafe示例詳解

    Java是一個安全的開發(fā)工具,它阻止開發(fā)人員犯很多低級的錯誤,而大部份的錯誤都是基于內存管理方面的。如果你想搞破壞,可以使用Unsafe這個類。下面這篇文章主要給大家介紹了關于Java中魔法類:sun.misc.Unsafe的相關資料,需要的朋友可以參考下
    2018-05-05
  • Java中用戶向系統(tǒng)傳遞參數(shù)的三種基本方式實例分享

    Java中用戶向系統(tǒng)傳遞參數(shù)的三種基本方式實例分享

    這篇文章主要介紹了Java中用戶向系統(tǒng)傳遞參數(shù)的三種基本方式實例,有需要的朋友可以參考一下
    2014-01-01
  • Java?Stream.reduce()用法詳細解析

    Java?Stream.reduce()用法詳細解析

    Stream API提供了豐富的中間函數(shù),歸并函數(shù)和終端函數(shù),這些函數(shù)還支持并行化執(zhí)行,下面這篇文章主要給大家介紹了關于Java?Stream.reduce()用法的相關資料,需要的朋友可以參考下
    2022-12-12
  • java基礎--JDK SPI概述

    java基礎--JDK SPI概述

    SPI是一種服務發(fā)現(xiàn)機制,本文就SPI做了詳細概述,具有很好的參考價值,希望對小伙伴們有所幫助,感興趣的朋友一起來參考參考吧
    2021-08-08
  • 解決Properties屬性文件中的值有等號和換行的小問題

    解決Properties屬性文件中的值有等號和換行的小問題

    這篇文章主要介紹了解決Properties屬性文件中的值有等號有換行的小問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 基于Spring實現(xiàn)零重啟自由編排任務的定時管理器

    基于Spring實現(xiàn)零重啟自由編排任務的定時管理器

    我們發(fā)現(xiàn),我們使用Spring自帶的定時任務如果要有修改,那么就要修改代碼,然后重啟項目,所以本文就帶大家實現(xiàn)一個零重啟自由編排任務的定時管理器吧
    2023-07-07

最新評論