我正在评估NATS以迁移现有的基于msg的软件,我没有找到有关msg超时、异常和重载的文档。例如:
NATS服务器将接另一个订户,并将重新发布相同的消息?
恰奥·迭戈
发布于 2017-09-27 14:39:19
对于您的第一个问题:在我看来,您正在尝试发布带有超时的请求消息(使用nc.Request)。如果是的话,超时由客户端管理。有效地,客户端发布请求消息,并在回复主题上创建订阅。如果订阅在超时内没有收到任何消息,它将通知您超时条件,并取消对回复主题的订阅。
关于你的第二个问题--你在使用队列组吗?NATS中的队列组是指定队列组名称的订阅。具有相同队列组名称的所有订阅都由服务器专门处理。当消息到达时,服务器将选择队列组订阅之一将消息发送到它们之间的轮转。然而,服务器的责任只是传递消息。
要实现您所描述的功能,请使用超时和最多等于1的消息数来实现请求/回复功能。如果超时后没有收到响应,则客户端可以在延迟后重新发送请求消息或执行其他类型的恢复逻辑。回复消息应该是您的“协议”,以了解该消息已被正确处理。请注意,这将深入到您的消息传递体系结构的设计中。例如,超时可以在请求接收者收到并处理消息之后,但在客户端或服务器能够发布响应之前触发。在这种情况下,请求发送方将无法分辨出不同之处,最终会重新发布。这意味着这种类型的交互需要使请求成为幂等的,以防止重复的副作用。
https://stackoverflow.com/questions/46388219
复制相似问题