1

我使用 NNG 作为我的服务器间消息队列。

背景:

  1. 我正在实现一对长时间的后台服务,它们正在与 NNG 通信;
  2. 协议:pair0@tcp;
  3. 有效载荷消息可能会出现一秒钟,也可能是一天;

我的问题: 如果在特定时间段内没有产生消息,NNG 是否会自动定期向每个对等方发送“心跳”消息以保持 TCP 连接处于活动状态?

如果不是,我应该自己做“心跳”吗?

顺便说一句,这是我第一次使用 NNG。我不知道是否有它的官方/人口支持论坛,所以我在这里问我的问题。如果存在这样的论坛,请。告诉我。谢谢!

4

1 回答 1

1

欢迎来到 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_IVLNN_RECONNECT_IVL

于 2022-01-06T19:30:35.567 回答