Hi guys,<br><br>I&#39;ve played with the federation plugin a little. It seems that in order to send a message to a queue on the downstream server, the same queue has to be declared on the upstream server for federation to work?<br>
<br>For example:<br>__________________<br>|                              |<br>| Downstream server |   Exchange-D &lt;------  q1<br>|_________________|<br>             ^<br>             |<br>             |<br>__________________<br>
|                              |<br>
| Upstream server     |  Exchange-U &lt;------  q1<br>
|_________________|<br>             <br>_______ <br>|            | <br>

| Client   |<br>

|_______|<br><br>If I want to send messages from client through Upstream server to Downstream server, The messages can only get through when I declare a &quot;q1&quot; on Upstream server, bind that queue to Exchange-U with a routing key, then send the message to Exchange-U using that routing key. Not sure if this is how it&#39;s supposed to work. <br>
<br>Is it possible not to declare q1 on Upstream server and make federation work? My problem is that I have multiple customers listening to their own queues on Downstream server, and customers can be removed or added at any time. Say if X just connected to Downstream server, and I want to send messages to it. How would I be able to send messages to X given that I don&#39;t have a queue on Upstream server that corresponds to it? Though I already know X is in the customer list, when my clients start and initialise, I don&#39;t think it&#39;s a good idea to just create queues for all customers on the list, which I think would consume system resources unnecessarily.<br>
<br>Hopefully it all makes sense to you guys. Let me know if it&#39;s unclear.<br><br>The following is my federation config.<br><span style="color:rgb(0,102,0)">{rabbitmq_federation,</span><br style="color:rgb(0,102,0)"><span style="color:rgb(0,102,0)">   [ {exchanges, [[{exchange,     &quot;Exchange-D&quot;},</span><br style="color:rgb(0,102,0)">
<span style="color:rgb(0,102,0)">                   {virtual_host, &quot;/&quot;},</span><br style="color:rgb(0,102,0)"><span style="color:rgb(0,102,0)">                   {type,         &quot;topic&quot;},</span><br style="color:rgb(0,102,0)">
<span style="color:rgb(0,102,0)">                   {durable,      true},</span><br style="color:rgb(0,102,0)"><span style="color:rgb(0,102,0)">                   {auto_delete,  false},</span><br style="color:rgb(0,102,0)">
<span style="color:rgb(0,102,0)">                   {internal,     false},</span><br style="color:rgb(0,102,0)"><span style="color:rgb(0,102,0)">                   {upstream_set, &quot;upsteam-servers&quot;}]</span><br style="color:rgb(0,102,0)">
<span style="color:rgb(0,102,0)">                 ]},</span><br style="color:rgb(0,102,0)"><span style="color:rgb(0,102,0)">     {upstream_sets, [{&quot;upsteam-servers&quot;, [[{connection, &quot;192.168.0.21&quot;},</span><br style="color:rgb(0,102,0)">
<span style="color:rgb(0,102,0)">                                         {exchange,   &quot;Exchange-U&quot;},</span><br style="color:rgb(0,102,0)"><span style="color:rgb(0,102,0)">                                         {max_hops,   2}</span><br style="color:rgb(0,102,0)">
<span style="color:rgb(0,102,0)">                                         ]}</span><br style="color:rgb(0,102,0)"><span style="color:rgb(0,102,0)">                     ]},</span><br style="color:rgb(0,102,0)"><span style="color:rgb(0,102,0)">     {connections, [{&quot;Upstream-server&quot;,       [{host,          &quot;upstream&quot;},</span><br style="color:rgb(0,102,0)">
<span style="color:rgb(0,102,0)">                                         {protocol,        &quot;amqps&quot;},</span><br style="color:rgb(0,102,0)"><span style="color:rgb(0,102,0)">                                         {port,            5671},</span><br style="color:rgb(0,102,0)">
<span style="color:rgb(0,102,0)">                                         {ssl_options,</span><br style="color:rgb(0,102,0)"><span style="color:rgb(0,102,0)">                                          [{cacertfile, &quot;/etc/rabbitmq/certs/testca/cacert.pem&quot;},</span><br style="color:rgb(0,102,0)">
<span style="color:rgb(0,102,0)">                                           {certfile,   &quot;/etc/rabbitmq/certs/client/cert.pem&quot;},</span><br style="color:rgb(0,102,0)"><span style="color:rgb(0,102,0)">                                           {keyfile,    &quot;/etc/rabbitmq/certs/client/key.pem&quot;},</span><br style="color:rgb(0,102,0)">
<span style="color:rgb(0,102,0)">                                           {verify,     verify_peer},</span><br style="color:rgb(0,102,0)"><span style="color:rgb(0,102,0)">                                           {fail_if_no_peer_cert, false}</span><br style="color:rgb(0,102,0)">
<span style="color:rgb(0,102,0)">                                          ]}</span><br style="color:rgb(0,102,0)"><span style="color:rgb(0,102,0)">                                        ]}</span><br style="color:rgb(0,102,0)">
<span style="color:rgb(0,102,0)">                                     ]},</span><br style="color:rgb(0,102,0)"><span style="color:rgb(0,102,0)">     {local_username, &quot;guest&quot;},</span><br style="color:rgb(0,102,0)">
<span style="color:rgb(0,102,0)">   ]</span><br style="color:rgb(0,102,0)"><span style="color:rgb(0,102,0)">  }</span><br><br>Thanks,<br><br>Brian<br>