2

NATS 服务器集群部分指出:

请注意,NATS 集群服务器的转发限制为一跳。这意味着每个 gnatsd 实例只会将它从客户端接收到的消息转发到它具有路由的紧邻的 gnatsd 实例。从路由接收到的消息只会分发给本地客户端。因此,建议 NATS 使用完整的网格集群或完整的图形,以按预期和文档中描述的那样运行。

假设我有一个由 3 个节点组成的 NATS 集群:A -> B -> C(->表示路由)。请让我知道在以下情况下 NATS 客户端会发生什么:

  • 发送到节点 A 的消息
  • 节点 A 在将消息传递给节点 B 之前突然终止

提前致谢

4

1 回答 1

4

在您描述的情况下,该消息将被丢弃。

Core NATS 提供“最多一次”的传递保证,因此如果您不能容忍丢失的消息,您的应用程序需要检测到消息从未到达其目的地并重新发送消息。您可以使用请求/回复模式从超时中检测到这一点,或者对丢失的消息实施您自己的补救类型。

或者,您可以使用 NATS 流,它提供基于日志的持久性并位于 NATS 之上。它将保证消息将“至少传递一次”。

于 2018-03-16T22:39:46.310 回答