使用RabbitMQ仅从Spring云数据流中的特定路由密钥使用

a7qyws3x  于 2023-01-05  发布在  RabbitMQ
关注(0)|答案(1)|浏览(168)

在Cloud Stream for RabbitMQ中,我想设置一个消费者,它只会从一个队列中消费使用特定路由键转发的消息。
这是我的应用程序。

生产商

spring.cloud.stream.rabbit.bindings..consumer.bindQueue=false
spring.cloud.stream.rabbit.bindings..consumer.declareExchange=false
spring.cloud.stream.bindings.producer1-out-0.destination=exchange1
spring.cloud.stream.rabbit.bindings.producer1-out-0.producer.routingKeyExpression='routing.key.1'

消费者

spring.cloud.stream.rabbit.bindings..consumer.bindQueue=false
spring.cloud.stream.rabbit.bindings..consumer.declareExchange=false
spring.cloud.stream.bindings.consumer1-in-0.destination=exchange1
spring.cloud.stream.bindings.consumer1-in-0.group=reports
spring.cloud.stream.rabbit.bindings.consumer1-in-0.consumer.queueNameGroupOnly=false
spring.cloud.stream.rabbit.bindings.consumer1-in-0.consumer.bindingRoutingKeyDelimiter=,
spring.cloud.stream.rabbit.bindings.consumer1-in-0.consumer.bindingRoutingKey='routing.key.1'

交换和绑定直接在RabbitMQ中定义。
我的期望是,如果我把spring.cloud.stream.rabbit.bindings.consumer1-in-0.consumer.bindingRoutingKey换成其他东西,消费者就会停止消费,但事实并非如此。

xienkqul

xienkqul1#

不;与JMS不同,RabbitMQ没有消息选择器的概念;您将收到所有留言。
解决这个问题的规范方法是为每个RK使用不同的队列。
bindQueue为假时,bindingRoutingKey是无意义的,并且在任何情况下,它所做的只是指定在将队列绑定到交换机时使用哪个路由关键字。

相关问题