RabbitMQ同步消息的优缺点

时间:2017-10-12 16:28:58

标签: asynchronous rabbitmq messaging synchronous

因为我们都知道像RabbitMQ这样的消息总线主要用于异步消息传递,因此标准的approch就像在公交车上发布内容并且不担心谁将处理已发布的消息或何时处理一样。但我正在考虑我们的开发团队关于消息同步处理的最新演讲:案例是将消息发布到服务总线,并且作为发布者我想等待任何订阅者处理消息并将结果返回给我 - 所以它看起来而是作为请求 - 响应模型。我现在想的是在这个模型中降低性能。你的想法是什么?何时使用异步和同步时?有什么权衡?

1 个答案:

答案 0 :(得分:0)

可以进行同步消息传递,但会影响可伸缩性。如果出版商必须等待其收件人作出回应,那么在任何特定时间它都将受到限制。

但是,您可以使用异步消息传递实现请求 - 响应。在RabbitMQ中,您可以通过Remote Procedure Call (RPC)模式执行此操作。

简而言之,您的发布商会发布消息,但不会等待回复;在此期间它可以继续做其他事情。发布者确实通过在消息上放置CorrelationId并在本地存储它来跟踪它。该消息最终到达消费者,消费者处理该消息并在不同的队列上响应发布者。回复具有相同的CorrelationId。当发布者收到回复时,它可以将该特定呼叫(通过CorrelationId)标记为已处理。

如果您愿意,您还可以使用CorrelatonId执行其他操作,例如将那些我们之后未收到回复的邮件超时。 30秒。