spring 云总线 - 重命名 rabbitmq 队列?

spring cloud bus - rename rabbitmq queues?

有没有办法告诉 spring 总线重命名它的 rabbitmq 队列?在启动时,它们似乎只是一些随机值,如下所示:

springCloudBus.anonymous.4zzIP0z-TH6oIza5mCun7Q

试图让 spring 总线将其重命名为更易于阅读的可预测队列名称。例如:

testQueue

或者知道它为什么服务保存消息的知识。

我尝试将以下内容添加到 application.yml 上以用于 bootRun:

spring:
   cloud: 
     stream:
       bindings:
         output:
           destination: testQueue

无济于事。请帮忙!!

注意:匿名组对于 Spring Cloud Bus 的正常工作至关重要。

使用群组可以

a) 持久订阅,这意味着应用程序将接收所有事件(包括未发送的事件 运行)

b) 使用组意味着应用程序可以成为竞争消费者,这意味着事件不会广播

c) 不再自动删除队列

您在 spring-cloud-bus inbound/outbound 通道中设置的目的地是 rabbitmq 交换而不是队列。

对于 spring-cloud-bus出站 频道名称是 springCloudBusOutput

因此,您的配置需要: spring: cloud: stream: bindings: springCloudBusOutput: destination: testExchange 这里的目标名称 testExchange 是交换名称而不是 queue 名称。 为避免 anonymous 名称出现在队列中,您可以为 inbound 通道绑定设置一个 group 名称。

spring: cloud: stream: bindings: springCloudBusInput: destination: testExchange group: testQueue

这将使队列名称testExchange.testQueue

我最近是这样做的:

spring:
  cloud:
    stream:
      rabbit:
        default:
          consumer:
            anonymousGroupPrefix: ${spring.application.name}-${server.port}.

它重命名所有匿名队列,这非常有用。