【rabbitMQ】声明队列和交换机

上一篇:springboot整合rabbitMQ模拟简单收发消息

https://blog.csdn.net/m0_67930426/article/details/134904766?spm=1001.2014.3001.5501

相关配置环境参考上篇

springAMQP提供了几个类用来声明声明队列,交换机及其绑定关系

声明队列,交换机及其绑定都在消费者一端完成

目录

基于Bean声明

Fanout

声明交换机

声明队列

交换机绑定队列

Direct

声明交换机

声明队列

交换机绑定队列

基于注解声明


基于Bean声明

Fanout

声明交换机

java 复制代码
package com.example.consumer.config;

import org.springframework.amqp.core.FanoutExchange;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class FanoutConfig {

    @Bean
    public FanoutExchange fanoutExchange(){
        return new FanoutExchange("a.fanout");

    }
    
}

另一种写法

java 复制代码
    @Bean
    public FanoutExchange fanoutExchange(){
    return   ExchangeBuilder.fanoutExchange("a.fanout").build();
    }

声明队列

java 复制代码
@Bean
    public Queue queue1(){
        return new Queue("aaa.queue");
    }

另一种写法

java 复制代码
    @Bean
    public Queue queue1(){
        return QueueBuilder.durable("aaa.queue").build();
    }

交换机绑定队列

java 复制代码
    @Bean
    public Binding binding1(FanoutExchange fanoutExchange, Queue queue11){
        return BindingBuilder.bind(queue1).to(fanoutExchange);
    }

绑定多个对列

代码:

java 复制代码
package com.example.consumer.config;

import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class FanoutConfig {

    @Bean
    public FanoutExchange fanoutExchange(){
    return   ExchangeBuilder.fanoutExchange("a.fanout").build();
    }

    @Bean(name="queue1")
    public Queue queue1(){
        return QueueBuilder.durable("aaa.queue").build();
    }

    @Bean
    public Binding binding1(FanoutExchange fanoutExchange, Queue queue1){
        return BindingBuilder.bind(queue1).to(fanoutExchange);
    }

    @Bean
    public Queue queue2(){
        return QueueBuilder.durable("bbb.queue").build();
    }

    @Bean
    public Binding binding2(FanoutExchange fanoutExchange, Queue queue2){
        return BindingBuilder.bind(queue2).to(fanoutExchange);
    }
}

Direct

声明交换机

java 复制代码
package com.example.consumer.config;

import org.springframework.amqp.core.DirectExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class DirectConfig {

    @Bean
    public DirectExchange directExchange(){
        return new DirectExchange("b.direct");
    }

声明队列

java 复制代码
 @Bean
    public Queue queue3(){
        return new Queue("ccc.queue");
    }

交换机绑定队列

java 复制代码
    @Bean
    public Binding binding3(DirectExchange directExchange, Queue queue3){
        return BindingBuilder.bind(queue3).to(directExchange).with("red");
    }

以上内容创建了一个a.fanout交换机,创建了一个b.direct交换机

创建了aaa.queue队列,bbb.queue队列,ccc.queue队列

a.fanout绑定了aaa.queue,bbb.queue两个队列,b.direct绑定了ccc.queue队列

并且Routing key: " red "

基于注解声明

在基于Bean声明中,如果要再绑定一个Routing key 需要重新创建一个bean,这样势必会麻烦很多

java 复制代码
 
    @RabbitListener(bindings = @QueueBinding(
            value =@Queue(name="eee.queue" ,durable = "true"),
            exchange =@Exchange(name="eee.direct",type= ExchangeTypes.DIRECT ),
            key = {"red","blue"}
    ))
    public void ccc(String msg){
        System.out.println("消费者收到了eee.queue的消息:【"+msg+"】");
    }
相关推荐
罗四强1 小时前
第10篇:打包上架:签名、打包 HAP、发布到华为应用市场
分布式·操作系统·harmonyos·arkts·鸿蒙系统
秋饼1 小时前
Redis 全面解析:从数据结构到主从/哨兵/集群、分布式锁与面试高频考点,代码到原理一次讲透
数据库·redis·分布式·面试·后端开发
二月夜1 小时前
Redis 高频面试题全解:缓存三大问题、大 key 治理与分布式锁之争(2026 招聘 JD 真题复盘)
redis·分布式·后端·缓存
后台模板学习1 小时前
Kafka 与 RabbitMQ 在用户认证与权限管理场景
kafka·rabbitmq·linq
樱花落木兰1 小时前
Redis 消息队列的可靠性演进:从 List、Pub/Sub 到 Stream 消费者组,以及 8.x 版本改变了什么
java·开发语言·经验分享·redis·分布式·python·软件工程
真上帝的左手4 小时前
12. 消息队列-Kafka进阶
分布式·中间件·kafka
装不满的克莱因瓶20 小时前
支付订单成功异步MQ权益发放设计和开发
java·架构·系统架构·rabbitmq·硬件架构
Thanks_ks1 天前
Cookie 和 Session 到底是什么关系——登录态是怎么维持的
分布式·http·jwt·cookie·session·后端开发·登录态
千里达景区票务系统1 天前
消息队列选型对比:RabbitMQ vs RocketMQ vs Kafka
kafka·消息队列·rabbitmq·rocketmq
Sayai1 天前
Kafka 跨数据中心日志同步实战:MirrorMaker 2 选型对比 + Flink 中继任务落地(双中心互备与消费者组隔离避坑)
大数据·运维·分布式·flink·kafka·消息队列·高可用