What was the problem? &nbsp;I'm running in to the exact same thing.<div><br></div><div>The docs on this topic somehow manage to be extremely verbose while never seeming to tell me what I need to know to actually make things work. &nbsp;I could explain the successful bits of my attempt so far in a minute or two—it's <i>extremely</i>&nbsp;simple—but it's taken me hours to get here.</div><div><br><br>On Monday, February 27, 2012 3:48:22 PM UTC-6, James Carr wrote:<blockquote class="gmail_quote" style="margin: 0;margin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;">Nvm, I got it working.<p>On Mon, Feb 27, 2012 at 3:13 PM, James Carr &lt;<a href="javascript:" target="_blank" gdf-obfuscated-mailto="ENpmU6a7aKIJ">james....@gmail.com</a>&gt; wrote:<br>&gt; FYI, here is the configuration I am using on the downstream server:<br>&gt;<br>&gt; [<br>&gt; &nbsp;{rabbitmq_federation,<br>&gt; &nbsp; &nbsp;[ {exchanges, [[{exchange, &nbsp; &nbsp; "usage"},<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{virtual_host, "/"},<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{type, &nbsp; &nbsp; &nbsp; &nbsp; "topic"},<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{durable, &nbsp; &nbsp; &nbsp;true},<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{auto_delete, &nbsp;false},<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{internal, &nbsp; &nbsp; false},<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{upstream_set, "remotes"}]<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;]},<br>&gt; &nbsp; &nbsp; &nbsp;{upstream_sets, [{"remotes", [[{connection, &nbsp;"upstream-server"},<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {exchange, &nbsp; &nbsp;"usage"},<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {max_hops, &nbsp; &nbsp;2}]<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ]}<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;]},<br>&gt; &nbsp; &nbsp; &nbsp;{connections, [{"upstream-server", [{host, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"dc2rabbitmq1"},<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{protocol, &nbsp; &nbsp; &nbsp; &nbsp;"amqp"},<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{port, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"5672"},<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{virtual_host, &nbsp; &nbsp;"/"},<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{username, &nbsp; &nbsp; &nbsp; &nbsp;"guest"},<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{password, &nbsp; &nbsp; &nbsp; &nbsp;"guest"},<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{mechanism, &nbsp; &nbsp; &nbsp; default},<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{prefetch_count, &nbsp;1000},<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{reconnect_delay, 5},<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{heartbeat, &nbsp; &nbsp; &nbsp; 1},<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{queue_expires, &nbsp; 30000},<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{message_ttl, &nbsp; &nbsp; 10000}<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;]}<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;]},<br>&gt; &nbsp; &nbsp; &nbsp;{local_username, "guest"},<br>&gt; &nbsp; &nbsp; &nbsp;{local_nodename, "rabbit"}<br>&gt; &nbsp; &nbsp;]<br>&gt; &nbsp;}<br>&gt; ].<br>&gt;<br>&gt;<br>&gt; It creates the local exchange on the downstream node just fine, but no<br>&gt; action on the upstream (dc2rabbitmq1). A look at the error logs<br>&gt; reveals the below messages, but I don't completely grok erlang yet. :S<br>&gt;<br>&gt; =ERROR REPORT==== 27-Feb-2012::15:01:20 ===<br>&gt; ** Generic server &lt;0.1963.0&gt; terminating<br>&gt; ** Last message in was connect<br>&gt; ** When Server state == {state,amqp_network_<wbr>connection,<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{state,undefined,undefined,<wbr>undefined,undefined,<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;undefined,false},<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;0.1962.0&gt;,undefined,<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{amqp_params_network,&lt;&lt;"<wbr>guest"&gt;&gt;,&lt;&lt;"guest"&gt;&gt;,<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;&lt;"/"&gt;&gt;,"dc2rabbitmq1","5672"<wbr>,0,0,1,infinity,<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;none,<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[#Fun&lt;amqp_auth_mechanisms.<wbr>plain.3&gt;,<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #Fun&lt;amqp_auth_mechanisms.<wbr>amqplain.3&gt;],<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[],[]},<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;undefined,undefined,<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#Fun&lt;amqp_connection_sup.0.<wbr>39273983&gt;,<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#Fun&lt;amqp_connection_sup.2.<wbr>54430129&gt;,false}<br>&gt; ** Reason for termination ==<br>&gt; ** {function_clause,[{inet_tcp,<wbr>getserv,["5672"]},<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {gen_tcp,connect1,4},<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {gen_tcp,connect,4},<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {amqp_network_connection,do_<wbr>connect,5},<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {amqp_gen_connection,handle_<wbr>call,3},<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {gen_server,handle_msg,5},<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {proc_lib,init_p_do_apply,3}]}<br>&gt;<br>&gt; =ERROR REPORT==== 27-Feb-2012::15:01:20 ===<br>&gt; ** Generic server &lt;0.1949.0&gt; terminating<br>&gt; ** Last message in was {'$gen_cast',maybe_go}<br>&gt; ** When Server state == {not_started,<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{{upstream,<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {amqp_params_network,&lt;&lt;"guest"<wbr>&gt;&gt;,<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;&lt;"guest"&gt;&gt;,&lt;&lt;"/"&gt;&gt;,"<wbr>dc2rabbitmq1",<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "5672",0,0,1,infinity,none,<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [#Fun&lt;amqp_auth_mechanisms.<wbr>plain.3&gt;,<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#Fun&lt;amqp_auth_mechanisms.<wbr>amqplain.3&gt;],<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [],[]},<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;&lt;"usage"&gt;&gt;,1000,2,5,none,<wbr>10000,<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "upstream-server"},<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {resource,&lt;&lt;"/"&gt;&gt;,exchange,&lt;&lt;"<wbr>usage"&gt;&gt;}}}<br>&gt; ** Reason for termination ==<br>&gt; ** {{function_clause,[{inet_tcp,<wbr>getserv,["5672"]},<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{gen_tcp,connect1,4},<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{gen_tcp,connect,4},<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{amqp_network_connection,do_<wbr>connect,5},<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{amqp_gen_connection,handle_<wbr>call,3},<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{gen_server,handle_msg,5},<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{proc_lib,init_p_do_apply,3}]<wbr>},<br>&gt; &nbsp; &nbsp;{gen_server,call,[&lt;0.1963.0&gt;,<wbr>connect,infinity]}}<br>&gt;<br>&gt; =WARNING REPORT==== 27-Feb-2012::15:01:20 ===<br>&gt; Channel (&lt;0.1958.0&gt;): Unregistering confirm handler &lt;0.1949.0&gt; because<br>&gt; it died. Reason: {{function_clause,<br>&gt;<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [{inet_tcp,<br>&gt;<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; getserv,<br>&gt;<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ["5672"]},<br>&gt;<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{gen_tcp,<br>&gt;<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; connect1,<br>&gt;<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 4},<br>&gt;<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{gen_tcp,<br>&gt;<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; connect,<br>&gt;<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 4},<br>&gt;<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{amqp_network_connection,<br>&gt;<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; do_connect,<br>&gt;<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 5},<br>&gt;<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{amqp_gen_connection,<br>&gt;<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; handle_call,<br>&gt;<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 3},<br>&gt;<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{gen_server,<br>&gt;<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; handle_msg,<br>&gt;<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 5},<br>&gt;<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{proc_lib,<br>&gt;<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; init_p_do_apply,<br>&gt;<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 3}]},<br>&gt;<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{gen_server,<br>&gt;<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; call,<br>&gt;<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [&lt;0.1963.0&gt;,<br>&gt;<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;connect,<br>&gt;<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;infinity]}}<br>&gt;<br>&gt; Any help would be appreciated.<br>&gt;<br>&gt; Thanks,<br>&gt; James<br>&gt;<br>&gt;<br>&gt; On Mon, Feb 27, 2012 at 2:12 PM, James Carr &lt;<a href="javascript:" target="_blank" gdf-obfuscated-mailto="ENpmU6a7aKIJ">james....@gmail.com</a>&gt; wrote:<br>&gt;&gt; Sorry to hijack an existing thread, but I'm delving into using<br>&gt;&gt; federation myself (after a 3 month break of even working with<br>&gt;&gt; rabbitmq) and have a couple questions.<br>&gt;&gt;<br>&gt;&gt; 1) Does federation need to be installed on both upstream and downstream?<br>&gt;&gt; 2) I have a configuration that matches what Denis has but it only<br>&gt;&gt; creates the exchange on the downstream server and does nothing<br>&gt;&gt; upstream (only difference between his and mine is the remote hostname,<br>&gt;&gt; of course). What am I missing?<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt; Thanks,<br>&gt;&gt; James<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt; On Thu, Feb 23, 2012 at 10:47 AM, Simon MacMullen &lt;<a href="javascript:" target="_blank" gdf-obfuscated-mailto="ENpmU6a7aKIJ">si...@rabbitmq.com</a>&gt; wrote:<br>&gt;&gt;&gt; On 23/02/12 16:36, MELIQUE Denis (MORPHO) wrote:<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; Thank you Simon.<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; This makes it much clearer for me.<br>&gt;&gt;&gt;&gt; I was first surprised to see this queue always empty on my test bed,<br>&gt;&gt;&gt;&gt; but the reason is (correct me if I'm wrong)<br>&gt;&gt;&gt;&gt; that my system was not loaded enough, and consumers got messages as soon<br>&gt;&gt;&gt;&gt; as they came in.<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; You're partly right. Your system was not loaded enough, but the messages in<br>&gt;&gt;&gt; that queue will be consumed by the downstream exchange, not (directly) by<br>&gt;&gt;&gt; your consumers.<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; So every message consumed from the downstream is first written on disk.<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; No. The queue is durable, but that just determines whether it survives a<br>&gt;&gt;&gt; restart. Transient messages can still through it, and remain transient.<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; Cheers, Simon<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; This might be a disadvantage for performance.<br>&gt;&gt;&gt;&gt; And gives an advantage to Shovel, as you can configure it with transient<br>&gt;&gt;&gt;&gt; queues.<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; Denis<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; -----Original Message-----<br>&gt;&gt;&gt;&gt; From: Simon MacMullen [mailto:<a href="javascript:" target="_blank" gdf-obfuscated-mailto="ENpmU6a7aKIJ">si...@rabbitmq.com</a>]<br>&gt;&gt;&gt;&gt; Sent: Thursday, February 23, 2012 12:11 PM<br>&gt;&gt;&gt;&gt; To: MELIQUE Denis (MORPHO)<br>&gt;&gt;&gt;&gt; Cc: <a href="javascript:" target="_blank" gdf-obfuscated-mailto="ENpmU6a7aKIJ">rabbitmq...@lists.<wbr>rabbitmq.com</a><br>&gt;&gt;&gt;&gt; Subject: Re: [rabbitmq-discuss] Understanding Federation<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; On 23/02/12 10:56, MELIQUE Denis (MORPHO) wrote:<br>&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt; I’m doing some testing with federation plug-in to try to understand it.<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; Cool!<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; &lt;snip&gt;<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt; What are these Exchange and Queues used for ?<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; The queue is there to buffer messages that are published to the upstream<br>&gt;&gt;&gt;&gt; exchange and have not yet been consumed from the downstream exchange.<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; It is bound to the internal exchange with the union of all the bindings<br>&gt;&gt;&gt;&gt; that are in use downstream, so we only transfer messages that are going<br>&gt;&gt;&gt;&gt; to be of use downstream.<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; The internal exchange is there so that whenever we (re)establish a<br>&gt;&gt;&gt;&gt; federation link we can set up an exact set of bindings<br>&gt;&gt;&gt;&gt; mostly-atomically, by creating a new internal exchange, creating all the<br>&gt;&gt;&gt;&gt; bindings to it, then binding it to the upstream exchange.<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt; Are they reserved for federation internal use ?<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; Yes.<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt; When do messages go into these queues ?<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; As mentioned, the bindings are pushed upstream so messages from upstream<br>&gt;&gt;&gt;&gt; go into these queues if they will be routed once they get downstream.<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt; Do they have to be durable or is there a way to configure them as<br>&gt;&gt;&gt;&gt;&gt; transient ?<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; At the moment they have to be durable. Is this a problem? The idea is<br>&gt;&gt;&gt;&gt; that you can set the queue TTL if you do not want them to hang around<br>&gt;&gt;&gt;&gt; forever.<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt; I would be very interested by a brief description of how federation<br>&gt;&gt;&gt;&gt;&gt; works internally.<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; Hopefully this answers your question.<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; Cheers, Simon<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; --<br>&gt;&gt;&gt; Simon MacMullen<br>&gt;&gt;&gt; RabbitMQ, VMware<br>&gt;&gt;&gt; ______________________________<wbr>_________________<br>&gt;&gt;&gt; rabbitmq-discuss mailing list<br>&gt;&gt;&gt; <a href="javascript:" target="_blank" gdf-obfuscated-mailto="ENpmU6a7aKIJ">rabbitmq...@lists.<wbr>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/<wbr>cgi-bin/mailman/listinfo/<wbr>rabbitmq-discuss</a><br>______________________________<wbr>_________________<br>rabbitmq-discuss mailing list<br><a href="javascript:" target="_blank" gdf-obfuscated-mailto="ENpmU6a7aKIJ">rabbitmq...@lists.<wbr>rabbitmq.com</a><br><a href="https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss" target="_blank">https://lists.rabbitmq.com/<wbr>cgi-bin/mailman/listinfo/<wbr>rabbitmq-discuss</a><br></p></blockquote></div>