我正在使用rabbitmq作为消息传递系统来开发微服务架构中的应用程序。
微服务之间的调用是异步http请求,每个服务都在特定队列上订阅
我的问题是,调用是无状态的,如何不通过Rabbitmq队列中的routing-key而是通过http调用本身来保证消息通信的并行化,也就是说,对于n调用,每个服务都必须能够监听到只需要的消息。
答案 0 :(得分:0)
不确定我是否完全理解了这个问题,但是根据描述,我可以提出以下建议:
如果每个服务都挂接到特定的侦听器,并且您不想为Queue + Listener集成关联路由键,那么可以尝试使用标头参数。 [您可以使用QueueBuilder.withArguments API设置队列应该监听的特定Header值] 需要一种机制,通过这种机制,交换将绑定到特定队列,从而绑定到侦听器服务。
Publisher-> Exchange --->(带有标题)绑定到Queue-> Listener
答案 1 :(得分:0)
抱歉,我想进一步解释:
这种情况是我们处于微服务架构中,由于巨大的数据响应,呼叫服务将在侦听器Rabbitmq队列中收到答案。
因此,让我们想象一下,同时进行了两个调用,并且两个查询开始将数据加载到同一队列中,调用服务正在等待消息并添加接收到的消息,但是无法区分调用者1和调用者2的数据。
侦听器是否有更好的实现