NNG(下一代纳米消息)是否会定期自动传输一些心跳?

问题描述 投票:0回答:1

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

背景:

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

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

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

顺便说一句,这是我第一次使用 NNG。我不知道是否有官方/填充的支持论坛,所以我在这里问我的问题。

tcp message-queue heartbeat pynng
1个回答
1
投票

欢迎来到 NNG 和

如果我们希望我们的传输坚如磐石,被证明是 RTO,那么在任何情况下我们都可以发送零大小的“应用程序级”心跳

然而,NNG 使用

nn_setsockopt()
配置器选项
{ ... | 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
确定。默认为零。

© www.soinside.com 2019 - 2024. All rights reserved.