RabbitMQ fanout广播消息使用匿名队列

场景

我们希望发送的消息被所有绑定到这个交换机的所有队列消费到,那么我们通常会用到fanout类型的交换机,

但我们又不想固定队列名称,那么就需要随机的队列名称,RabbitMQ中的AnonymousQueue就是解决这个问题的,通常,当您需要一个唯一命名的排他性自动删除队列时,建议您使用AnonymousQueue而不是broker定义的队列名称(使用“”作为队列名称会导致代理生成队列名称),默认情况下,队列名称以spring.gen-为前缀,后跟UUID的base64表示形式,例如:spring.gen-MRBv9sqISkuCiPfOYfpo4g

实例

//该队列名称以spring.gen-为前缀,后跟UUID的base64表示形式-例如:spring.gen-MRBv9sqISkuCiPfOYfpo4g
@Bean
public Queue anon1() {
    return new AnonymousQueue();
}

//生成一个以某些东西为前缀的队列名称,后跟UUID的base64表示形式
@Bean
public Queue anon2() {
    return new AnonymousQueue(new AnonymousQueue.Base64UrlNamingStrategy("something-"));
}

//仅通过使用UUID(不进行base64转换)来生成名称,例如f20c818a-006b-4416-bf91-643590fedb0e
@Bean
public Queue anon3() {
    return new AnonymousQueue(AnonymousQueue.UUIDNamingStrategy.DEFAULT);
}

您可以提供自己的命名策略,从而可以在队列名称中包括其他信息(例如应用程序名称或客户端主机)。

 

用注解的方式消费

@RabbitListener(bindings = @QueueBinding(
            value = @Queue(),
            exchange = @Exchange(name = Constants.MYFANOUT_MESSAGE_EXCHANGE, type = ExchangeTypes.FANOUT)
    )
    )
    @RabbitHandler
    public void receive(@Payload MyMessage message, @Headers Map<String, Object> headers, Channel channel) throws IOException {
        //todo 业务逻辑
    }

注意上面的监听队列里面没有参数,这里表示自动生成一个匿名队列来消费fanout交换机的消息,匿名队列如下图所示

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Spring Boot中使用RabbitMQFanout模式,需要在项目的配置文件中添加RabbitMQ的相关配置信息。根据提供的引用内容,可以看到有三个配置文件中都包含了RabbitMQ的配置信息,分别是server: port: 10002的配置文件\[1\],application.properties的配置文件\[2\],以及server: port: 10001的配置文件\[3\]。 你可以根据自己的需求选择其中一个配置文件进行配置。在配置文件中,需要设置RabbitMQ的主机地址、端口号、虚拟主机、用户名和密码等信息。根据提供的引用内容,可以得到以下配置信息: RabbitMQ主机地址:127.0.0.1 RabbitMQ端口号:5672 虚拟主机:/ 用户名:admin 密码:admin 你可以将这些配置信息添加到你选择的配置文件中,确保配置信息正确无误。这样就完成了Spring Boot中使用RabbitMQFanout模式的配置。 #### 引用[.reference_title] - *1* *3* [Spring Boot整合RabbitMQ之发布与订阅模式(fanout)](https://blog.csdn.net/cssweb_sh/article/details/125194004)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [RabbitMQ:SpringBoot+RabbitMQ的简单实现之Fanout模式](https://blog.csdn.net/qq_29229567/article/details/86510358)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值