[rabbitmq-discuss] Consumer/publisher - last message published does not appear in queue, but appears in firehose trace!?
keith at spronkey.com
Sun Jul 1 01:14:46 BST 2012
I've got a double pump scenario going on - that is, my application enqueues
a *broadcast* message, that then gets picked up by *consumer** type 1*, and
transformed into many *singlecast* messages on a separate queue that are
picked up by *consumer** type 2. *Consumer type 1 also creates and
publishes a confirmation message in yet another queue, containing the
number of singlecast messages it enqueued.*
What's happening is that Consumer type 1 is operating fine up until it
needs to enqueue the confirmation message. The first time any particular
type 1 consumer publishes a confirm message, it never ends up in the
confirmation queue. All singlecast messages end up correctly in their
queues. If the same process is allowed to consume a second broadcast
message, the confirmation it publishes *does *end up in the confirmation
queue (seemingly every time, but this could be a red herring). Firehose
trace would indicate that the consumer is doing everything it should - it
shows all confirm message publishes with correct exchange and routing key,
yet confirm queue remains empty.
The Consumer/publisher operates as follows:
1. Initiate 2 connections (to same server, currently): "in", and "out"
2. Create 4 channels:
1. bound to *gn-broadcast*
2. bound to *gn-smsout*
3. bound to *gn-emailout*
4. bound to *msg-broadcast-confirm***
3. Consume loop begins on *in* channel consuming from *broadcast* queue
1. Gather person list from broadcast message body
2. Start transactions on *smsout* and *emailout* channels
3. Loop through person list. For each, create two AMQP Messages w/
single person and publish to *smsout *and *emailout* queues
4. Once finished looping, commit transaction (assuming all OK)
5. Create new AMQPMessage with number of persons and publish to *
A copy of the script is here for reference: http://pastebin.com/GH1hr1ph
The php-amqplib debug output clearly shows in all cases that the
basic_publish message* is being sent with the correct contents of the
confirmation message*. There are no breaks in the connection or exceptions
occurring. Likewise, the firehose trace from rabbit publishes a message to
trace queue showing the confirm message has been published, with the
correct exchange and correct routing key. However, my confirm queue is
Why would this occur? Do I need more than 2 connections? (I didn't think I
would need more than 1, but the sms and email messages don't seem to
publish nicely without a second connection).
What on earth is going on? It's doing my head in!
Rabbitmq-server version 2.8.2 running in a Turnkey LAMP VM (Ubuntu 10.04).
Client is running on Mac OS X 10.6.8 with latest php-amqplib.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the rabbitmq-discuss