我正在使用ZeroMQ的C#包装器,但这似乎更像是ZeroMQ的潜在问题.
有没有办法在没有阻塞和没有排队的情况下推送消息?如果服务器没有启动,我希望永久处理这些消息而不会阻塞.
以下是我到目前为止尝试过的设置:
1)
发送(阻止发送)
高水位线= 0
这(stragely)不会阻塞,但它似乎在内存中排队,直到套接字连接(内存不断上升为进程).
2)
发送(非阻止发送)
高水位= 1
这是竞争条件.如果我快速连续发送两条消息,有时会抛出一条消息,因为超过了高水位线.
3)
轮询套接字以确定它是否会阻塞.这并没有真正帮助,因为我仍然必须在开始阻塞之前将一条(旧)消息放入队列中(如果我设置HWM = 1).
具有任何高水位标记的非阻塞发送是不合需要的,因为一旦服务器重新联机,它就会从客户端获得一堆旧消息.
阻止发送不起作用,因为我不想阻止.