RabbitMQ-fanout广播交换器模式

需求

当订单服务向交换器发送请求的时候,需要短信服务和push服务进行工作,如果使用传统的服务调用的话,是强耦合不利于扩展开发,此时可以使用RabbitMQ提供的交换器中的Fanout(广播模式)进行解决,中间件通过广播模式同时将请求放入订单服务的队列中。进行业务的处理
fanout不会进行路由键匹配的进行消息的发送,而是以广播的方式将消息发送到所有的队列中,所以不管是消费端还是生产端都不需要路由键的存在

在这里插入图片描述

Consumer构建

1.全局配置文件
1.设置交换器的名字
2.设置队列的名称,fanout不需要进行设置路由键

spring.rabbitmq.host=192.168.177.140
spring.rabbitmq.port=5672
spring.rabbitmq.username=oldlu
spring.rabbitmq.password=123456
spring.application.name=08-rabbitmq-fanout-cunsumer

#配置交换器的名字
spring.rabbitmq.exchange.name=order-topic

#设置短信队列名称
spring.rabbitmq.queue.sms=order-sms

#设置push队列名称
spring.rabbitmq.queue.push=order-push

2.创建队列类

SMS队列
fanout是不需要路由的
SmsQueue

@Component
@RabbitListener(
        bindings = @QueueBinding(
                value = @Queue(value = "${spring.rabbitmq.queue.sms}"),
                exchange = @Exchange(value = "${spring.rabbitmq.exchange.name}",type = ExchangeTypes.FANOUT)
        )
)
public class SmsQueue
{

    @RabbitHandler
    public void sms(String msg){
        System.out.println("fanout...."+msg);
    }
}

pushQueu

@Component
@RabbitListener(
        bindings = @QueueBinding(
                value = @Queue(value = "${spring.rabbitmq.queue.push}"),
                exchange = @Exchange(value = "${spring.rabbitmq.exchange.name}",type = ExchangeTypes.FANOUT)
        )
)
public class PushQueue
{

    @RabbitHandler
    public void push(String msg){
        System.out.println("push...."+msg);
    }
}

provider

1.全局配置文件
只需要添加交换器的名字即可

spring.rabbitmq.host=192.168.177.140
spring.rabbitmq.port=5672
spring.rabbitmq.username=oldlu
spring.rabbitmq.password=123456
spring.application.name=09-rabbitmq-fanout-provider
#配置交换器的名字
spring.rabbitmq.exchange.name=order-topic

2.信息的发送

使用fanout进行设置的时候路由key值给空字符串即可

@Component
public class Sender
{

    @Autowired
    private RabbitTemplate rabbitTemplate;

    @Value("${spring.rabbitmq.exchange.name}")
    private String exchange;

    public void send(String msg){
        /**
         * 路由键给空字符串即可
         */
        this.rabbitTemplate.convertAndSend(this.exchange, "",msg);
    }
}

结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值