Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RabbitMQ';s";“x-expires”;论点_Rabbitmq_Zeromq_Amqp - Fatal编程技术网

RabbitMQ';s";“x-expires”;论点

RabbitMQ';s";“x-expires”;论点,rabbitmq,zeromq,amqp,Rabbitmq,Zeromq,Amqp,。。。或者zmq如何处理断开连接的客户端?如果客户端断开连接,队列是否有某种类型的超时,在这种情况下它可以继续接收消息,但在这么多秒后会自行清理?请参阅: ZMQ插座具有高水位线的概念 从文档中: The high water mark is a hard limit on the maximum number of outstanding messages ØMQ shall queue in memory for any single peer that the specified soc

。。。或者zmq如何处理断开连接的客户端?如果客户端断开连接,队列是否有某种类型的超时,在这种情况下它可以继续接收消息,但在这么多秒后会自行清理?

请参阅:

ZMQ插座具有高水位线的概念

从文档中:

The high water mark is a hard limit on the maximum number of outstanding messages ØMQ shall 
queue in memory for any single peer that the specified socket is communicating with.

If this limit has been reached the socket shall enter an exceptional state and depending on 
the socket type, ØMQ shall take appropriate action such as blocking or dropping sent messages. 
对于每种类型的zmq套接字(REQ、REP、PUB、SUB等),您可以检查文档的行为—如果它阻止消息发送或删除消息


大多数情况下,当客户端断开连接时,它会丢弃消息。如果这对您很重要,那么您必须在ZMQ模式的基础上构建消息持久性和可靠性。

您可以使用几种不同的策略,这取决于您的需要(没有一种答案适合所有人)

通常,如果客户机断开连接,它在服务器端的队列将被删除。PUB-to-SUB流和PUSH-to-PULL流都是如此

如果您想处理频繁断开的连接,可以使用ROUTER-DEALER并在连接上设置标识(在连接之前,在经销商端)。然后,路由器将为经销商排队消息,即使它离开并返回。然后可以使用HWM限制该队列的大小

如果您想要超时,这就有点棘手了,因为ZeroMQ要么永久保存消息,要么在消息无法排队时立即删除它们。您需要在服务器中以自己的列表结构对消息进行排队,将HWM设置为1,并使用非阻塞发送将它们从队列中推出,因为有足够的空间容纳它们。然后您可以自己使客户端过期并删除与它们关联的队列。听起来像是工作,但很简单