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

1.springboot整合rabbitmq

pom中加入依赖


<dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-amqpartifactId>
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

新建红框标注的文件即可:
rabbitmq四种使用模式:direct模式,交换机模式,fanout模式,header模式_第1张图片

2. 直连模式

controller中加入内容

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

rabbitmq四种使用模式:direct模式,交换机模式,fanout模式,header模式_第2张图片

直连模式的mq配置
rabbitmq四种使用模式:direct模式,交换机模式,fanout模式,header模式_第3张图片
发送者
rabbitmq四种使用模式:direct模式,交换机模式,fanout模式,header模式_第4张图片
监听者
rabbitmq四种使用模式:direct模式,交换机模式,fanout模式,header模式_第5张图片
测试:http://localhost:8080/demo/testmq
rabbitmq四种使用模式:direct模式,交换机模式,fanout模式,header模式_第6张图片
打印日志
在这里插入图片描述

3.交换机模式

交换机配置
rabbitmq四种使用模式:direct模式,交换机模式,fanout模式,header模式_第7张图片

/**
     * 交换机模式:路由配置
     *
     */
    @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:针对两个消息队列进行监听
rabbitmq四种使用模式:direct模式,交换机模式,fanout模式,header模式_第8张图片
sender:发送topic.key1会按照匹配规则被路由器放到MQConfig.TOPIC_QUEUE2和MQConfig.TOPIC_QUEUE1上。发送topic.key2会被按照匹配规则放到MQConfig.TOPIC_QUEUE2上。
rabbitmq四种使用模式:direct模式,交换机模式,fanout模式,header模式_第9张图片
controller
rabbitmq四种使用模式:direct模式,交换机模式,fanout模式,header模式_第10张图片
测试:http://localhost:8080/demo/testmq2
rabbitmq四种使用模式:direct模式,交换机模式,fanout模式,header模式_第11张图片
控制台日志
在这里插入图片描述

4.fanout类型的交换机

配置
rabbitmq四种使用模式:direct模式,交换机模式,fanout模式,header模式_第12张图片
rabbitmq四种使用模式:direct模式,交换机模式,fanout模式,header模式_第13张图片
sender:向该广播类型的路由器发送数据
rabbitmq四种使用模式:direct模式,交换机模式,fanout模式,header模式_第14张图片
receive:此时沿用前面的两个主题MQConfig.TOPIC_QUEUE1和MQConfig.TOPIC_QUEUE2的监听者。

controller
rabbitmq四种使用模式:direct模式,交换机模式,fanout模式,header模式_第15张图片
测试 :
rabbitmq四种使用模式:direct模式,交换机模式,fanout模式,header模式_第16张图片
产生日志
在这里插入图片描述

5. header模式

配置
rabbitmq四种使用模式:direct模式,交换机模式,fanout模式,header模式_第17张图片
sender
rabbitmq四种使用模式:direct模式,交换机模式,fanout模式,header模式_第18张图片
receive
rabbitmq四种使用模式:direct模式,交换机模式,fanout模式,header模式_第19张图片
controller
rabbitmq四种使用模式:direct模式,交换机模式,fanout模式,header模式_第20张图片
测试
rabbitmq四种使用模式:direct模式,交换机模式,fanout模式,header模式_第21张图片
控制台打印
在这里插入图片描述

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

你可能感兴趣的:(rabbitmq)