Rabbitmq Spring Cloud Stream-使用相同的路由密钥和不同的头从同一队列发布和使用
制作人Rabbitmq Spring Cloud Stream-使用相同的路由密钥和不同的头从同一队列发布和使用,rabbitmq,spring-cloud-stream,Rabbitmq,Spring Cloud Stream,制作人 exchange name : xyz, exchange type: direct, queue: myqueue, routingkey : myroutingkey, @StreamListner1 - consume type1 message from queue: myqueue with routingkey : myroutingkey @StreamListner2 - consume type2 message from queue: myqueue with
exchange name : xyz,
exchange type: direct,
queue: myqueue,
routingkey : myroutingkey,
@StreamListner1 - consume type1 message from queue:
myqueue with routingkey : myroutingkey
@StreamListner2 - consume type2 message from queue:
myqueue with routingkey : myroutingkey
生产者可以向队列发送不同类型的对象,但为了区分b/w对象,他将发送标题['type']='type1'以及已经绑定到队列的'myroutingkey'
send message : myroutingkey + header[type] = type1 to queue:
myqueue
send message : myroutingkey + header[type] = type2 to queue:
myqueue
消费者
exchange name : xyz,
exchange type: direct,
queue: myqueue,
routingkey : myroutingkey,
@StreamListner1 - consume type1 message from queue:
myqueue with routingkey : myroutingkey
@StreamListner2 - consume type2 message from queue:
myqueue with routingkey : myroutingkey
我使用Rabit MQ来实现上述要求
上述要求可能与spring cloud stream有关。如果可能,发布者和消费者方面需要做什么。请给出一些示例。是的,可以通过使用
@StreamListener
上的条件
属性来实现。比如说,
@StreamListener(target = Sink.INPUT, condition = "headers['type']=='bogey'")
详细信息是。I,改进其格式,或帮助人们理解您的问题,并帮助您获得适当的答案。但是你可能仍然需要添加更多的信息才能完全解决你的问题。请记住,只有当两个听众都在同一个应用程序中时,这才有效。消费者对路由密钥没有任何概念。发布者使用路由密钥发布到exchange;使用者使用路由密钥从绑定到exchange的队列中消费。同一队列的2个使用者将竞争消息。如果您希望不同应用程序中的2
@StreamListener
s获得发布者发布的消息子集,则每个使用者都需要使用适当的路由密钥绑定自己的队列。