我想从客户端向服务器发送数据。只有最后一条消息对服务器很重要。如果服务器在发生故障后启动,我只希望服务器从客户端获取最后一条消息。
当服务器关闭时,我希望客户端继续处理并发送消息或将其放入队列中(长度为一条消息)。
我尝试使用NetMQ / ZeroMQ。怎么办呢?
谢谢!
答案 0 :(得分:3)
首先使用PubSub,其中客户端是发布者,PubSub只会在您上线时收到消息,如果订阅者(您的情况下服务器)关闭它会丢失所有消息(如收音机)
ZeroMQ还有一个名为Conflate的功能(NetMQ还没有它,你可能想要移植它),看看下面的问题:
ZeroMQ: I want Publish–Subscribe to drop older messages in favor of newer ones
还介绍了ZeroMQ文档中的混淆:
ZMQ_CONFLATE:仅保留最后一条消息如果设置,套接字应在其入站/出站队列中只保留一条消息,此消息是最后一条消息/最后一条消息要发送。忽略' ZMQ_RCVHWM'和' ZMQ_SNDHWM'选项。不支持多部分消息,特别是,它只有一部分保留在套接字内部队列中。