Answers inline:<br><br><div class="gmail_quote">On Fri, Jun 18, 2010 at 12:07 AM, Matthias Radestock <span dir="ltr"><<a href="mailto:matthias@rabbitmq.com">matthias@rabbitmq.com</a>></span> wrote:</div><div class="gmail_quote">
<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
The reason we don't map the blank exchange name to something else is that RabbitMQ permits anything in the exchange name, so *** and --- actually are valid exchange names.</blockquote><div><br></div><div>I understand but it seems to me that the pain it causes users in general is greater than the remote chance somebody would have called its queue ---. Alternatively you could wrap queue names e.g. around brackets. You could also use a divider ' | ' (which would also be an issue if somebody called its queue ' | ' but again it seems to me that the benefits way outweigh the drawbacks). </div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Are all AMQP interactions going through nanite? I can see there aren't any queue.unbind actions in that code base.</blockquote><div><br></div><div>Our code is based on nanite although we have heavily customized it now.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="im">I suggest you upgrade. The queue and exchange code has changed quite a bit in the recent release. While I do not recall us spotting any problems in the previous version that would explain the behaviour you are seeing, it is nevertheless possible that there was a bug in the previous code which has been eradicated by other changes.</div>
<div class="im"><br></div></blockquote><div><br></div><div>OK We will see about upgrading, this is not such a simple task now that the system is on production.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
ok. If you *do* think of a use case for auto-delete exchanges, please let us know. The AMQP 0-9-1 spec actually removes that</blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
feature, but we are having second thoughts on whether that was the right thing to do.</blockquote><div><br></div><div>will do.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I recreated some bindings from within the broker (directly in mnesia) and now things started working again. Is there a better way to re-create the binding to the default exchange without having to re-create the queue?<br>
</blockquote>
<br></div>
You should be able to issue an appropriate queue.bind command. As I mentioned earlier, such explicit operations on the default exchange should imo not be permitted, but rabbit does and it's a grey area of the spec. So currently it should work, just don't write any code that depends on it.<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">
I should probably mention that sending the following queue.bind packet didn't seem to help (rabbitmqctl list_bindings still shows the<br>
binding missing).<br>
<br>
[:sending,<br>
#<AMQP::Protocol::Queue::Bind:0x9b26778<br>
@arguments=nil,<br>
@debug=1,<br>
@exchange=<br>
"nanite-rs-instance-fd0416fe31d7b019112c2c0adce9b4e4a261bab1-1094976",<br>
@nowait=true,<br>
@queue="nanite-rs-instance-fd0416fe31d7b019112c2c0adce9b4e4a261bab1-1094976",<br></div><div class="im">
@routing_key=nil,<br>
@ticket=1>]<br>
<br>
</div></blockquote>
<br>
The exchange in the above should be blank.<br></blockquote><div><br></div><div>Setting the exchange to blank here did not seem to do the right thing. The binding that is missing is the one from the queue name to the routing key with the same name.</div>
<div><br></div><div>Also a different issue: Using a blank string with rabbitmqctl set_permissions has the same effect as using a wild card (.*). This seems a little bit counter-intuitive (i.e. rabbitmqctl set_permissions user "" "' "" has the same effect as rabbitmqctl set_permissions user ".*" ".*" ".*").</div>
<div><br></div><div>Finally a different question: is there a way to force a disconnect from a client from the broker? we have code that will force the client to recreate the binding and resubscribe if the connection gets broken and it would be nice if we could trigger this manually.</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br>
<br>
Regards,<br><font color="#888888">
<br>
Matthias.<br>
</font></blockquote></div><br><div>Thanks for the help!</div><div><br></div><div>--</div><div>Raphael.</div>