2

我想从客户端向服务器发送数据。只有最后一条消息对服务器很重要。如果服务器在失败后启动,我只希望服务器从客户端获取最后一条消息。

当服务器关闭时,我希望客户端继续处理和发送消息,或者至少将它们放入队列中(一条消息的长度)。

我尝试为此使用 NetMQ/ZeroMQ。怎么做到呢?

谢谢!

4

1 回答 1

3

首先使用客户端是发布者的 PubSub,使用 PubSub,您只会在在线时收到消息,如果订阅者(在您的情况下为服务器)关闭,它会错过所有消息(如收音机)

ZeroMQ 还有一个叫做 Conflate 的特性(NetMQ 还没有,你可能想移植它),看看下面的问题:

ZeroMQ:我希望 Publish-Subscribe 删除旧消息以支持新消息

ZeroMQ 文档中对 conflate 的描述:

ZMQ_CONFLATE:只保留最后一条消息 如果设置,套接字将在其入站/出站队列中只保留一条消息,该消息是最后接收的消息/要发送的最后一条消息。忽略“ZMQ_RCVHWM”和“ZMQ_SNDHWM”选项。不支持多部分消息,特别是只有一部分保留在套接字内部队列中。

于 2015-05-22T13:44:51.100 回答