gpt4 book ai didi

java - 使用 RabbitMQ 实现 Saga 消息传递

转载 作者:太空宇宙 更新时间:2023-11-04 09:38:57 25 4
gpt4 key购买 nike

我是RabbitMQ的新手,想用RabbitMQ实现SAGA的异步消息传递。因此我使用RabbitMQ的RPC示例来完成该任务。我有一个协调器 ( RPCClient ) 和多个微服务 ( RPCServer )。 Orchestrator使用独特的队列来命令微服务。并且每个微服务使用公共(public)队列(Reply_Queue)来回复orchestrator。为了保留日志,当任何微服务在任何可配置的时间内关闭时,我希望在协调器端收到通知。我读到了有关消费者取消的信息,但它仅在我删除队列时才起作用。如何在 JAVA 中获取通知并保留队列消息?这是实现 saga 异步消息传递的正确方法吗?

最佳答案

实现可靠的 RPC 很困难,我无法提供有关如何做到这一点的详细指南。如果我们忽略相同的特殊故障情况,我可以给出一个简单的解决方法:

首先,我们假设 RPCClient 永远不会失败,RPCServer 可能随时失败。

RPCClient需要知道哪个请求超时,因此可以发送带有TTL请求消息RPCServer收到请求消息并发送响应消息后,应该ACK请求消息

如果RPCServer:

  • 在使用请求消息之前失败或者
  • 发送响应消息之前失败

请求消息将重新发布到Dead Letter Exchange ,这样RPCClient就可以消费到与该exchange绑定(bind)的某个队列,它可以知道哪个请求超时了。

关于java - 使用 RabbitMQ 实现 Saga 消息传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56189848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com