只使用RabbitMQ从Spring云流中的特定路由密钥中消费



在RabbitMQ的Cloud Stream中,我想设置一个消费者,它将只从队列中消费使用特定路由密钥转发的消息。这可能吗?

这是我的application.properties.

:

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改为其他东西,消费者将停止消费,但事实并非如此。

不;与JMS不同,RabbitMQ没有消息选择器的概念;您将获得所有消息。

解决这个问题的规范方法是为每个RK使用不同的队列。

bindQueue

为假时,bindingRoutingKey是没有意义的,并且在任何情况下,它所做的只是指定在将队列绑定到交换机时使用哪个路由密钥。

最新更新