SpringBoot整合RabbitMQ之發(fā)布訂閱模式
更新時間:2025年06月12日 09:13:47 作者:新綠MEHO
本文主要介紹了SpringBoot整合RabbitMQ之發(fā)布訂閱模式,涵蓋依賴配置、隊列與交換機聲明綁定、生產(chǎn)者與雙消費者代碼實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
發(fā)布訂閱模式

引入依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit-test</artifactId>
<scope>test</scope>
</dependency>添加配置
spring:
application:
name: rabbitmq-springboot
rabbitmq:
addresses: amqp://study:study@47.98.109.138:5672/aaa常量類
public class Constants {
//發(fā)布訂閱模式
public static final String FANOUT_QUEUE1 = "fanout.queue1";
public static final String FANOUT_QUEUE2 = "fanout.queue2";
public static final String FANOUT_EXCHANGE = "fanout.exchange";
}聲明隊列和交換機并綁定二者關系
import org.springframework.amqp.core.*;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import rabbitmq.constant.Constants;
@Configuration
public class RabbitMQConfig {
@Bean("fanoutQueue1")
public Queue fanoutQueue1(){
return QueueBuilder.durable(Constants.FANOUT_QUEUE1).build();
}
@Bean("fanoutQueue2")
public Queue fanoutQueue2(){
return QueueBuilder.durable(Constants.FANOUT_QUEUE2).build();
}
@Bean("fanoutExchange")
public FanoutExchange fanoutExchange(){
return ExchangeBuilder.fanoutExchange(Constants.FANOUT_EXCHANGE).durable(true).build();
}
@Bean("fanoutQueueBinding1")
public Binding fanoutQueueBinding1(@Qualifier("fanoutExchange") FanoutExchange fanoutExchange, @Qualifier("fanoutQueue1") Queue queue){
return BindingBuilder.bind(queue).to(fanoutExchange);
}
@Bean("fanoutQueueBinding2")
public Binding fanoutQueueBinding2(@Qualifier("fanoutExchange") FanoutExchange fanoutExchange, @Qualifier("fanoutQueue2") Queue queue){
return BindingBuilder.bind(queue).to(fanoutExchange);
}
}編寫生產(chǎn)者代碼
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import rabbitmq.constant.Constants;
@RequestMapping("/producer")
@RestController
public class ProducerController {
@Autowired
private RabbitTemplate rabbitTemplate;
@RequestMapping("/fanout")
public String fanout(){
rabbitTemplate.convertAndSend(Constants.FANOUT_EXCHANGE,"", "hello spring amqp:fanout...");
return "發(fā)送成功";
}
}編寫消費者代碼(含兩個隊列)
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
import rabbitmq.constant.Constants;
@Component
public class FanoutListener {
@RabbitListener(queues = Constants.FANOUT_QUEUE1)
public void queueListener1(String message){
System.out.println("隊列["+Constants.FANOUT_QUEUE1+"] 接收到消息:" +message);
}
@RabbitListener(queues = Constants.FANOUT_QUEUE2)
public void queueListener2(String message){
System.out.println("隊列["+Constants.FANOUT_QUEUE2+"] 接收到消息:" +message);
}
}生產(chǎn)消息


消費消息


兩個隊列都收到并消費了消息,且結果符合預期。
到此這篇關于SpringBoot整合RabbitMQ之發(fā)布訂閱模式的文章就介紹到這了,更多相關SpringBoot RabbitMQ發(fā)布訂閱模式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:
- springboot整合rabbitmq的示例代碼
- springboot集成rabbitMQ之對象傳輸?shù)姆椒?/a>
- Springboot 配置RabbitMQ文檔的方法步驟
- SpringBoot+RabbitMq具體使用的幾種姿勢
- springboot + rabbitmq 如何實現(xiàn)消息確認機制(踩坑經(jīng)驗)
- SpringBoot中RabbitMQ集群的搭建詳解
- SpringBoot中連接多個RabbitMQ的方法詳解
- 一文掌握Springboot集成RabbitMQ的方法
- SpringBoot實現(xiàn)RabbitMQ監(jiān)聽消息的四種方式
- SpringBoot 整合 RabbitMQ 的使用方式(代碼示例)
相關文章
MyBatis-Plus條件構造器之condition參數(shù)的使用
這篇文章主要介紹了MyBatis-Plus條件構造器之condition參數(shù)的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12
SpringBoot之HttpWebServiceMessageSenderBuilder用法詳解
這篇文章主要介紹了SpringBoot之HttpWebServiceMessageSenderBuilder用法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-04-04
springboot中動態(tài)權限實時管理的實現(xiàn)詳解
這篇文章主要為大家詳細介紹了如何簡單實現(xiàn)一個在springboot中動態(tài)權限的實時管理,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下2024-10-10
Post請求參數(shù)是數(shù)組或者List時的請求處理方式
這篇文章主要介紹了Post請求參數(shù)是數(shù)組或者List時的請求處理方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05

