You&#39;re the expert, should it work? :)<div><br></div><div>I haven&#39;t tested that out, hadn&#39;t occurred to me to try.<br clear="all"><br><div class="gmail_quote">On Tue, Jan 3, 2012 at 11:06 AM, Alexandru Scvorţov <span dir="ltr">&lt;<a href="mailto:alexandru@rabbitmq.com">alexandru@rabbitmq.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">&gt; We&#39;ve been bitten by this with firewalls that close connections after idle<br>
&gt; timeouts. Best solution I can come up with is to use TCP keepalives.<br>
<br>
Enabling heartbeats (when connecting with a client) didn&#39;t help?<br>
(heartbeats are the AMQP equivalent of TCP keep-alives)<br>
<br>
&gt; If you client supports setting TCP options during the connection, that&#39;s<br>
&gt; all you need to do for the client side part. For the server side, I<br>
&gt; couldn&#39;t find any options for this in the rabbit config, so we implemented<br>
&gt; libkeepalive to force the server to use keepalives.<br>
&gt;<br>
&gt; Rabbit folks, please add this as an option to the server.<br>
<br>
I haven&#39;t tried, but I think you can enable keepalives in the<br>
rabbitmq.config.  Just add a tcp_listen_options entry with {keepalive,<br>
true}:<br>
<br>
[<br>
        {rabbit, [{tcp_listen_options, [{keepalive, true}]}]}<br>
].<br>
<br>
<a href="http://www.rabbitmq.com/configure.html#config-items" target="_blank">http://www.rabbitmq.com/configure.html#config-items</a><br>
<br>
Wouldn&#39;t something like that work?<br>
<br>
Cheers,<br>
Alex<br>
<br>
On Tue, Jan 03, 2012 at 10:47:43AM -0500, Mark Steele wrote:<br>
&gt; We&#39;ve been bitten by this with firewalls that close connections after idle<br>
&gt; timeouts. Best solution I can come up with is to use TCP keepalives.<br>
&gt;<br>
&gt; If you client supports setting TCP options during the connection, that&#39;s<br>
&gt; all you need to do for the client side part. For the server side, I<br>
&gt; couldn&#39;t find any options for this in the rabbit config, so we implemented<br>
&gt; libkeepalive to force the server to use keepalives.<br>
&gt;<br>
&gt; Rabbit folks, please add this as an option to the server.<br>
&gt;<br>
&gt; Cheers,<br>
&gt;<br>
&gt; Mark Steele, CISSP, CSM<br>
&gt; Bering Media Inc.<br>
&gt;<br>
&gt; On Tue, Jan 3, 2012 at 9:41 AM, Alexandru Scvorţov<br>
&gt; &lt;<a href="mailto:alexandru@rabbitmq.com">alexandru@rabbitmq.com</a>&gt;wrote:<br>
&gt;<br>
&gt; &gt; &gt; With 100&#39;s of computers connected to rabbitmq with persistent<br>
&gt; &gt; connections,<br>
&gt; &gt; &gt; would this pose any problems?<br>
&gt; &gt;<br>
&gt; &gt; Not unless you run out of free file handles.  On normal installations,<br>
&gt; &gt; it should handle up to thousands of connections without difficulty.  You<br>
&gt; &gt; could further configure it to support more connections.<br>
&gt; &gt;<br>
&gt; &gt; &gt; Does it time-out by default?<br>
&gt; &gt;<br>
&gt; &gt; No.  Connections are not timed out.<br>
&gt; &gt;<br>
&gt; &gt; &gt; Why use a heartbeat?  Is it to re-establish if the heartbeat fails?<br>
&gt; &gt;<br>
&gt; &gt; If the network fails between a client and the broker, and there&#39;s no<br>
&gt; &gt; traffic between them at that point, both will think the connection is<br>
&gt; &gt; still open, even though it isn&#39;t.  Heartbeats ensure that both broker<br>
&gt; &gt; and client are notified fairly quickly if the connection fails.<br>
&gt; &gt;<br>
&gt; &gt; &gt; Would it be better for clients to close connections and only open a<br>
&gt; &gt; &gt; connection when necessary?<br>
&gt; &gt;<br>
&gt; &gt; It depends on your use case.<br>
&gt; &gt;<br>
&gt; &gt; &gt; For reading messages we need persistent connections.<br>
&gt; &gt; &gt; But for writing, and I can see how we could potentially only open a<br>
&gt; &gt; &gt; connection to write a message when required.<br>
&gt; &gt;<br>
&gt; &gt; For consuming messages *efficiently*, you need persistent connections.<br>
&gt; &gt; If you only get messages very rarely, you could open a connection, poll<br>
&gt; &gt; the broker with basic.get and then close the connection.  But, if you<br>
&gt; &gt; need to consume a lot of messages, you probably want persistent<br>
&gt; &gt; connections anyway.<br>
&gt; &gt;<br>
&gt; &gt; Hope this helps.<br>
&gt; &gt;<br>
&gt; &gt; Cheers,<br>
&gt; &gt; Alex<br>
&gt; &gt;<br>
&gt; &gt; On Thu, Dec 29, 2011 at 05:21:26PM -0500, S Ahmed wrote:<br>
&gt; &gt; &gt; With 100&#39;s of computers connected to rabbitmq with persistent<br>
&gt; &gt; connections,<br>
&gt; &gt; &gt; would this pose any problems?<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Does it time-out by default?<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Why use a heartbeat?  Is it to re-establish if the heartbeat fails?<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Would it be better for clients to close connections and only open a<br>
&gt; &gt; &gt; connection when necessary?<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; For reading messages we need persistent connections.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; But for writing, and I can see how we could potentially only open a<br>
&gt; &gt; &gt; connection to write a message when required.<br>
&gt; &gt;<br>
&gt; &gt; &gt; _______________________________________________<br>
&gt; &gt; &gt; rabbitmq-discuss mailing list<br>
&gt; &gt; &gt; <a href="mailto:rabbitmq-discuss@lists.rabbitmq.com">rabbitmq-discuss@lists.rabbitmq.com</a><br>
&gt; &gt; &gt; <a href="https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss" target="_blank">https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss</a><br>
&gt; &gt;<br>
&gt; &gt; _______________________________________________<br>
&gt; &gt; rabbitmq-discuss mailing list<br>
&gt; &gt; <a href="mailto:rabbitmq-discuss@lists.rabbitmq.com">rabbitmq-discuss@lists.rabbitmq.com</a><br>
&gt; &gt; <a href="https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss" target="_blank">https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss</a><br>
&gt; &gt;<br>
</blockquote></div><br></div>