[rabbitmq-discuss] about RabbitMQ + HTTP Server configuration

Marek Majkowski majek04 at gmail.com
Thu Nov 11 14:19:44 GMT 2010


On Thu, Nov 11, 2010 at 08:16, Madalin Popa <madalin at sellerengine.com> wrote:
> I have a RabbitMQ server with 2 channels (tx, rx), consuming requests
> (rx channel) from a HTTP server and passing them to a pool of
> slaves...The slaves, when they finish their work, pass the result back
> on RabbitMQ tx channel, from where the response needs to be mapped back
> to initial HTTP request. Are there any natural/out of the box solutions
> for this final part of mapping the response received from tx queue back
> to HTTP requester?

What we usually do to achieve rpc:
 1. On every Requester we create an anonymous queue.
     Let's say that this queue is randomly named 'req-1'
 2. Requester publishes a message to the queue shared by the workers.
    This message contains usual stuff, like the description of the
    work to do. But except from that, it should have two headers
    set: 'reply_to' -> set to 'req-1' and 'correlation_id' -> set to a
random value.
3 . The worker picks up the task, does what it should do,
    and after it's done, it's ready to respond.
    The response should go to the queue named by 'reply_to' header
    in the request. Don't forget also to copy over the 'correlation_id' header.
4. Requester looks at his queue, sees a reply.
    Based on 'correlation_id' it's able to match it to the request.
5. Tadam. Job done.

Using this schema you:
 - need one queue per requester
 - don't have to create a single queue per every request
 - you're free to trash responses that come with invalid 'correlation_id' tag.

Cheers,
  Marek


More information about the rabbitmq-discuss mailing list