rabbitmq四种使用模式:direct模式,交换机模式,fanout模式,header模式

本文详细介绍了如何在Spring Boot项目中整合RabbitMQ,包括直连模式、交换机模式、fanout类型交换机及header模式的配置与使用。通过具体代码示例,展示了消息队列的发送与接收过程,为开发者提供了全面的实践指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.springboot整合rabbitmq

pom中加入依赖

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

application.properties

########################################################################
# rabbitmq
########################################################################
spring.rabbitmq.host=192.168.48.142
spring.rabbitmq.port=5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=123456
# 虚拟多个rabbitmq默认写法,即使guest也可以访问该目录
spring.rabbitmq.virtual-host=/
#消费者最大连接数量
spring.rabbitmq.listener.simple.concurrency= 10
spring.rabbitmq.listener.simple.max-concurrency= 10
#每次连接取一个线程读写
spring.rabbitmq.listener.simple.prefetch= 1
#消费者启动
spring.rabbitmq.listener.simple.auto-startup=true
#消费者消费数据失败重试
spring.rabbitmq.listener.simple.default-requeue-rejected= true
#重试的配置
spring.rabbitmq.template.retry.enabled=true
spring.rabbitmq.template.retry.max-attempts=3
spring.rabbitmq.template.retry.multiplier=1.0

新建红框标注的文件即可:
在这里插入图片描述

2. 直连模式

controller中加入内容

/**
* 测试:消息队列整合是否成功:direct模式
* @return
*/
@RequestMapping("/testmq")
@ResponseBody
public Result<String> testmq(){
   mqSender.send("test for rabbitmq..");
   return Result.success("success mq");
}

在这里插入图片描述

直连模式的mq配置
在这里插入图片描述
发送者
在这里插入图片描述
监听者
在这里插入图片描述
测试:http://localhost:8080/demo/testmq
在这里插入图片描述
打印日志
在这里插入图片描述

3.交换机模式

交换机配置
在这里插入图片描述

/**
     * 交换机模式:路由配置
     *
     */
    @Bean
    public Queue topicQueue1() {
        return new Queue(MQConfig.TOPIC_QUEUE1, true);
    }
    @Bean
    public Queue topicQueue2() {
        return new Queue(MQConfig.TOPIC_QUEUE2, true);
    }
    @Bean
    public TopicExchange topicExchange(){
        return new TopicExchange(MQConfig.TOPIC_EXCHANGE);
    }
    // 表示路由key是topic.key1的消息,进入交换机绑定到topicQueue1()消息队列上
    @Bean
    public Binding topicBinding1() {
        return BindingBuilder.bind(topicQueue1()).to(topicExchange()).with("topic.key1");
    }
    // 表示路由key是topic.#的消息,进入交换机绑定到topicQueue2()消息队列上(#是占位符,表示0个以上的数据)
    @Bean
    public Binding topicBinding2() {
        return BindingBuilder.bind(topicQueue2()).to(topicExchange()).with("topic.#");
    }

receive:针对两个消息队列进行监听
在这里插入图片描述
sender:发送topic.key1会按照匹配规则被路由器放到MQConfig.TOPIC_QUEUE2和MQConfig.TOPIC_QUEUE1上。发送topic.key2会被按照匹配规则放到MQConfig.TOPIC_QUEUE2上。
在这里插入图片描述
controller
在这里插入图片描述
测试:http://localhost:8080/demo/testmq2
在这里插入图片描述
控制台日志
在这里插入图片描述

4.fanout类型的交换机

配置
在这里插入图片描述
在这里插入图片描述
sender:向该广播类型的路由器发送数据
在这里插入图片描述
receive:此时沿用前面的两个主题MQConfig.TOPIC_QUEUE1和MQConfig.TOPIC_QUEUE2的监听者。

controller
在这里插入图片描述
测试 :
在这里插入图片描述
产生日志
在这里插入图片描述

5. header模式

配置
在这里插入图片描述
sender
在这里插入图片描述
receive
在这里插入图片描述
controller
在这里插入图片描述
测试
在这里插入图片描述
控制台打印
在这里插入图片描述

ps: 本项目只是用到了rabbitmq中的文件和controller中的DemoController,源码中的其它内容可以根据自己的情况查看。
源码: https://github.com/LUK-qianliu/miaosha

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值