我使用 NNG 作为我的服务器间消息队列。
背景:
- 我正在实现一对长时间的后台服务,它们正在与 NNG 通信;
- 协议:pair0@tcp;
- 有效载荷消息可能会出现一秒钟,也可能是一天;
我的问题: 如果在特定时间段内没有产生消息,NNG 是否会自动定期向每个对等方发送“心跳”消息以保持 TCP 连接处于活动状态?
如果不是,我应该自己做“心跳”吗?
顺便说一句,这是我第一次使用 NNG。我不知道是否有它的官方/人口支持论坛,所以我在这里问我的问题。如果存在这样的论坛,请。告诉我。谢谢!
我使用 NNG 作为我的服务器间消息队列。
背景:
我的问题: 如果在特定时间段内没有产生消息,NNG 是否会自动定期向每个对等方发送“心跳”消息以保持 TCP 连接处于活动状态?
如果不是,我应该自己做“心跳”吗?
顺便说一句,这是我第一次使用 NNG。我不知道是否有它的官方/人口支持论坛,所以我在这里问我的问题。如果存在这样的论坛,请。告诉我。谢谢!
欢迎来到 NNG 和分布式处理
我们可以在任何情况下发送零大小的“应用程序级”心跳,如果我们希望我们的传输是坚如磐石的,被证明是 RTO
然而,NNG 使用nn_setsockopt()
-configurator 选项{ ... | NN_RECONNECT_IVL | NN_RECONNECT_IVL_MAX | ... }
来微调底层细节,包括失败/关闭的套接字的重新连接管理
完整的调用签名是:
int nn_setsockopt( int sock,
int level,
int option,
const void *val,
size_t sz
);
以及NN_RECONNECT_*
-s 的一些细节:
NN_RECONNECT_IVL
以毫秒为单位的重新连接间隔。在传出连接关闭或失败后,套接字将在这么多毫秒后自动尝试重新连接。这是时间的起始值,在成功连接后的第一次重新连接尝试中使用。默认值为 100。最大重新连接间隔(以毫秒为单位)。尝试失败后的后续重新连接尝试以指数增加的间隔(回退)进行,但间隔受此值的限制。如果该值小于,则不执行指数回退,并且每个重新连接间隔将仅由 确定。默认为零。
NN_RECONNECT_IVL_MAX
NN_RECONNECT_IVL
NN_RECONNECT_IVL