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

springboot整合消息隊(duì)列RabbitMQ

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

前言:

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

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

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

  • 啟動(dòng)RabbitMQ

雙擊運(yùn)行rabbitmq-server.bat:

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

創(chuàng)建springboot web項(xiàng)目——發(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)建一個(gè)用戶對象

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)建一個(gè)配置類:SenderConfiguration.java

一個(gè)名為queue1 隊(duì)列

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

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

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

@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)建一個(gè)測試類:TestRabbitMQ.java

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

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

運(yùn)行testRabbit方法:

創(chuàng)建springboot web項(xiàng)目——接收者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());
}
}

運(yùn)行啟動(dòng)類:SpringbootApplication.java,結(jié)果:

信息成功被接收。

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

步驟與Direct差不多。

發(fā)送者:

修改配置類SenderConfiguration.java:

創(chuàng)建兩個(gè)隊(duì)列 topic1,topic2,創(chuàng)建一個(gè)topic交換器,綁定交換機(jī)和隊(duì)列以及綁定規(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)建一個(gè)topic交換器
return new TopicExchange("topicExchange");
}
@Bean
Binding bindingExchangeTopic1(@Qualifier("topic1") Queue queueMessage, TopicExchange exchange) {
//設(shè)置topic1綁定規(guī)則
return BindingBuilder.bind(queueMessage).to(exchange).with("topic.queue");
}
@Bean
Binding bindingExchangeTopic2(@Qualifier("topic2") Queue queueMessages, TopicExchange exchange) {
//設(shè)置topic2綁定規(guī)則 *表示一個(gè)詞,#表示零個(gè)或多個(gè)詞
return BindingBuilder.bind(queueMessages).to(exchange).with("topic.#");
}

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

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

運(yùn)行testRabbit方法:

成功廣播出去兩條信息

接收者:

修改接收類ReceiverService.java

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

運(yùn)行啟動(dòng)類,結(jié)果:

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

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

相關(guān)文章

  • spring boot 錯(cuò)誤頁面配置解決方案

    spring boot 錯(cuò)誤頁面配置解決方案

    這篇文章主要介紹了spring boot 錯(cuò)誤頁面配置解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • iOS多線程介紹

    iOS多線程介紹

    這篇文章主要介紹了iOS多線程的相關(guān)知識,涉及到對進(jìn)程,線程等方面的知識講解,本文非常具有參考價(jià)值,感興趣的朋友一起學(xué)習(xí)吧
    2016-05-05
  • Spring Boot配置攔截器及實(shí)現(xiàn)跨域訪問的方法

    Spring Boot配置攔截器及實(shí)現(xiàn)跨域訪問的方法

    這篇文章主要介紹了Spring Boot配置攔截器及實(shí)現(xiàn)跨域訪問的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • Java 類與對象詳細(xì)

    Java 類與對象詳細(xì)

    這篇文章主要介紹了Java 類與對象,在Java中,我們把對象的特征稱為屬性,對象的用途稱為方法,具有相同屬性和方法的對象,我們把他們歸為一類,簡稱類。下面文章講詳細(xì)介紹什么是Java類與對象,需要的朋友可以參考一下
    2021-10-10
  • Spring Boot2.0使用Spring Security的示例代碼

    Spring Boot2.0使用Spring Security的示例代碼

    這篇文章主要介紹了Spring Boot2.0使用Spring Security的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-08-08
  • HashMap和Hashtable的詳細(xì)比較

    HashMap和Hashtable的詳細(xì)比較

    這篇文章主要介紹了HashMap和Hashtable的詳細(xì)比較的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • java多線程并發(fā)中使用Lockers類將多線程共享資源鎖定

    java多線程并發(fā)中使用Lockers類將多線程共享資源鎖定

    Lockers在多線程編程里面一個(gè)重要的概念是鎖定,如果一個(gè)資源是多個(gè)線程共享的,為了保證數(shù)據(jù)的完整性,在進(jìn)行事務(wù)性操作時(shí)需要將共享資源鎖定,這樣可以保證在做事務(wù)性操作時(shí)只有一個(gè)線程能對資源進(jìn)行操作,下面看一個(gè)示例
    2014-01-01
  • 一個(gè)簡單的java學(xué)生寢室查詢系統(tǒng)

    一個(gè)簡單的java學(xué)生寢室查詢系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了一個(gè)簡單的java學(xué)生寢室查詢系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • 基于selenium 獲取新頁面元素失敗的解決方法

    基于selenium 獲取新頁面元素失敗的解決方法

    今天小編就為大家分享一篇基于selenium 獲取新頁面元素失敗的解決方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • java中超過long范圍的超大整數(shù)相加算法詳解(面試高頻)

    java中超過long范圍的超大整數(shù)相加算法詳解(面試高頻)

    這篇文章主要介紹了java中超過long范圍的超大整數(shù)相加算法(面試高頻),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08

最新評論

武陟县| 灵武市| 县级市| 松原市| 同德县| 清丰县| 旺苍县| 云浮市| 石河子市| 美姑县| 惠安县| 封开县| 和林格尔县| 大足县| 永德县| 灵武市| 望谟县| 玉田县| 阿图什市| 阳泉市| 临城县| 五大连池市| 得荣县| 广宁县| 新郑市| 思南县| 仙居县| 宁武县| 资中县| 和龙市| 开阳县| 张家港市| 汽车| 土默特右旗| 洛浦县| 正安县| 苏州市| 南召县| 西和县| 顺昌县| 巫山县|