如何重新收集连接资源?

时间:2014-03-01 12:41:04

标签: erlang rabbitmq

如果rabbitmq客户端连接到服务器并且不长时间发送消息,是否可以通过编程来监视和关闭其连接?如何获取这些相关信息?

1 个答案:

答案 0 :(得分:0)

有两件事可以确保不会发生这种情况:

  • 您的数据包无法在适当的时候通过TCP。这将由内核处理,您将收到连接关闭错误。如果您正确配置客户端,它会告诉您这种情况,然后您可以处理该问题。最简单的方法是监控你拥有的频道的Pid,然后如果它死了就会做出反应,但也许还有其他方法(我记不起细节了)。

  • RabbitMQ keepalive数据包未及时到达。这将强制终止连接。与上述相同。有一台显示器会有所帮助。 rabbitmq Erlang客户端中的“频道”为Pid,因此可以对其进行监控(erlang:monitor(process, Pid))。

  • 您设法发送邮件,但没有邮件传递到的队列。这可以通过订阅频道事件来处理。您将从RabbitMQ收到312 - No Route消息。