OpenSIPS/opensips — pull request #92 by franklyfox (2013-10-01 19:53:25+00:00)
Title: enable rabbitmq heartbeat to solve processes hang by amqp socket

This implementation enables the rabbitmq's client side's heartbeat negotiation.

Problem:
Because of TCP's nature, it takes very long time for a TCP peer to make the decision of closing the local socket. Before this implementation, Opensips 1.9 doesn't handle the situation well and it stop processing UDP packets until the O.S decides to close the local socket. One of the consequence is that UAC cannot register to the registrar during this time period.

Solution:
If the module, even_rabbitmq/rabbitmq-client, doesn't get a heartbeat message from the rabbitmq-server within X seconds, the rabbitmq-client will kill the local socket connection actively.

Added a modparam:

modparam("event_rabbitmq", "heartbeat", [X seconds])