2017-10-12 1217 views
0

因为我们都知道像rabbitMQ这样的消息总线主要用于异步消息传递,因此标准接近是在公共汽车上发布和发布消息,而不用担心谁会处理发布的消息或何时。但是我正在考虑我们的开发团队中有关消息同步处理的最新讨论:情况是将消息发布到服务总线,并且作为发布者,我想等待任何订阅者处理消息并将结果返回给我 - 因此它看起来像而是作为请求 - 响应模型。我现在正在考虑一个类似于这个模型中性能下降的问题。你怎么看?何时使用异步和何时同步?什么是权衡?RabbitMQ同步消息传递的优缺点

回答

0

同步消息传递是可能的,但影响可扩展性。如果发布商不得不等待其收件人回复,那么在任何给定时间,它都会受到限制。

但是,您可以使用异步消息传递实现请求 - 响应。在RabbitMQ中,您通过Remote Procedure Call (RPC)模式执行此操作。简而言之,您的发布商发布消息,但不会等待回复;在此期间它可以继续做其他事情。发布者确实记录了它,通过在消息上添加CorrelationId并将其存储在本地。该消息最终到达消费者,消费者处理该消息,并在不同的队列上回应发行商。答复有相同的CorrelationId。当发布者收到答复时,它可以将该特定呼叫(通过CorrelationId)标记为已处理。

如果您愿意,您还可以使用CorrelatonId做其他事情,例如超时收到我们未收到回复后的消息。 30秒。

+0

你能否提供请求 - 响应方式的示例代码? – Macko

+0

你可以在我提供的链接中找到它。 – Gigi