<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Joe,<div><br><div><html>On 10 Apr 2008, at 21:18, Joe Lee wrote:</html><br class="Apple-interchange-newline"><blockquote type="cite"><div class="gmail_quote"><div>Does null queue have any special functionality?<br> <br></div></div></blockquote><div><br></div><div>Not really. As you correctly observe below, the expected behaviour of passing an empty queue name is that the broker fills this in for you and tells you what name it gave the queue. This is also the behaviour of RabbitMQ.</div><br><blockquote type="cite"><div class="gmail_quote"><div> <br> Abstract from the amqp docs:<br> <br> <a href="http://2.1.5.3">2.1.5.3</a> Constructing a PubSub<br> Subscription Queue<br> <br> Here is the pseudocode<br> for creating and binding the pubsub subscription queue:<br> Queue.Declare<br> &nbsp;&nbsp;&nbsp; queue=&lt;empty><br> &nbsp;&nbsp;&nbsp; auto_delete=TRUE<br> S:Queue.Declare-Ok<br> &nbsp;&nbsp;&nbsp; queue=tmp.2<br> Queue.Bind<br> &nbsp;&nbsp;&nbsp; queue=tmp.2<br> &nbsp;&nbsp;&nbsp; TO exchange=amq.topic<br> &nbsp;&nbsp;&nbsp; WHERE routing_key=STOCK.USD.*<br> <br> To consume from the subscription queue, the consumer does this:<br> <br> Basic.Consume<br> &nbsp;&nbsp;&nbsp; queue=tmp.2<br> <br> When publishing a message, the producer does something like this:<br> <br> Basic.Publish<br> &nbsp;&nbsp;&nbsp; exchange=amq.topic<br> &nbsp;&nbsp;&nbsp; routing_key=STOCK.USD.IBM<br>&nbsp;</div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br> Maybe you can tell us what you are trying to achieve.<br> </blockquote><div><br>I just want to do simple publish a message and then consume the message.</div></div></blockquote><div><br></div><div><br></div></div>This will work with Rabbit. The issue I think you are have is not to do with non-compliance with the specification.</div><div><br></div><div>As I said in my previous mail, I think you have a bug in your code where you match the response of the queue declare call.</div><div><br></div><div>In your code, one of the fields of the tuple you are matching on is already bound, and as Erlang doesn't allow destructive assignment, it treats the assignment operator in this context as a comparison.</div><div><br></div><div>The way to fix this is the following:</div><div><br></div><div>'queue.declare_ok'{</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;%% Don't use the previously bound variable called Q to store the&nbsp;</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;%%&nbsp;queue name field because the Erlang runtime will complain</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;queue = SomeVariableNameOtherThanTheOneYouPreviouslyAssigned,&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message_count = MessageCount,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;consumer_count = ConsumerCount}<br>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = amqp_channel:call(Channel,QueueDeclare)</div><div><br></div><div>and then perform a basic consume using the value stored in the variable "SomeVariableNameOtherThanTheOneYouPreviouslyAssigned".</div><div><br></div><div>HTH,</div><div><br></div><div>Ben</div></body></html>