Golo Roden
Golo Roden

Reputation: 150892

RabbitMQ: Exchanges, queues and bindings - who does setup what?

When using RabbitMQ for sending messages you basically have exchanges, queues and bindings. I've understood their idea and how they relate to each other, but I am not quite sure who sets up what.

Basically, I have three scenarios in my application.

Scenario 1: One publisher, several worker processes

What I want to achieve is one component that sends messages to a queue, and there shall be several worker processes that handle items in that queue. This seems quite easy to me. The setup is as follows:

Whenever a message is sent to the exchange, it gets delivered to the queue, and the worker processes get their tasks.

Everything shall be durable.

So who sets up what? In my opinion:

Right?

Scenario 2: One publisher, several subscribers, volatile messages

The second scenario is quite different. Basically, it's a pub / sub scenario where each message is send to every currently listening client. If a client goes offline, it does not receive messages any longer and they are not stored anywhere for him. This means the following setup:

So who sets up what? In my opinion:

Right?

Scenario 3: One publisher, several subscribers, durable messages

Basically the same as scenario 2, but the messages should not be lost if a consumer goes offline. In my opinion this should not change anything - right?

Upvotes: 20

Views: 4940

Answers (1)

old_sound
old_sound

Reputation: 2313

I think what you say is right except on Scenario 3.

If messages should not be lost if a consumer goes offline then you need durable queues and the queues can't be auto_delete'd.

Everything else seems right to me.

In the case of scenario 2 you could also let RabbitMQ auto-generate queue names for you and then let those queues be auto-delete'd once the consumer disconnects.

Upvotes: 8

Related Questions