1

我正在评估 NATS 以迁移现有的基于 msg 的软件我没有找到有关 msg 超时异常和过载的文档。例如:

  • 选择订阅者后,是否知道发布者发布的超时设置?是否可以通知额外的时间延长?
  • If the elected subscriber is aware that some DBMS connection is missing and cannot complete It could be possible to bounce the message

NATS 服务器将接收另一个订阅者并重新发布相同的消息?

迭戈

4

1 回答 1

1

对于您的第一个问题:在我看来,您正在尝试发布带有超时的请求消息(使用nc.Request)。如果是这样,则超时由客户端管理。客户端有效地发布请求消息并在回复主题上创建订阅。如果订阅在超时时间内没有收到任何消息,它将通知您超时条件并取消订阅回复主题。

关于您的第二个问题 - 您是否使用队列组?NATS 中的队列组是指定队列组名称的订阅。具有相同队列组名称的所有订阅都由服务器特殊处理。服务器将选择其中一个队列组订阅发送消息,以便在消息到达时在它们之间轮换。然而,服务器的职责只是传递消息。

要执行您所描述的操作,请使用请求/回复使用超时和最大消息数等于 1 来实现您的功能。如果在超时后未收到任何响应,您的客户端可以在延迟一段时间后重新发送请求消息或执行其他类型恢复逻辑。回复消息应该是您的“协议”,以了解消息已得到正确处理。请注意,这会进入您的消息传递体系结构的设计中。例如,在请求接收者收到消息并处理它之后但在客户端或服务器能够发布响应之前触发超时是可能的。在这种情况下,请求发送者将无法区分差异并最终重新发布。

于 2017-09-27T14:39:19.977 回答