使用Spring Cloud Stream将RabbitMQ消费者绑定到现有队列

yuv*_*hon 6 java spring rabbitmq spring-cloud-stream

我已经使用RabbitMQ的网络的用户界面的话题交换创造TX并绑定到交换两个队列TX.Q1TX.Q2,每个路由键绑定RK1RK2因此,和产生的交流几条消息.

现在我想使用Spring Cloud Stream创建一个消费者,它只接收来自Q1的消息.我尝试使用配置:

spring.cloud.stream.bindings.input.destination=TX
spring.cloud.stream.bindings.input.group=Q1
Run Code Online (Sandbox Code Playgroud)

以及使用@StreamListner(Sink.INPUT)消息的方法的注释.

结果我可以看到消费者创建了一个具有相同名称TX.Q1的队列(或绑定),但新队列/ bind的Routing-Key是#.
如何通过Spring Cloud Stream配置消费者,消费者将使用来自预定义队列的消息(仅限于使用rk1路由的消息).

yuv*_*hon 5

因此,到目前为止,Garry Russell建议的解决方法已经为我解决了这个问题。

我用@RabbitListener的,而不是@StreamListenet这样:
@RabbitListener(bindings = @QueueBinding(value = @Queue(value = "TX.Q1", durable = "true"), exchange = @Exchange(value = "TX", type = "topic", durable = "true"), key = "rk1")

结果,预定义队列TX.Q1用绑定键rk1绑定到交换机TX

等待有关Spring Cloud Steream问题的更新。