0

I have tried to understand the RabbitMQ guarantees on publishing - so far without success - and I would like to know if someone can help me with this scenario:


Bindings

Exchange A -> Exchange B

Exchange A -> Exchange C

Exchange B -> Queue B1

Exchange C -> Queue C1


Properties

B1 and C1 is declared as persistent queues

B1 and C1 is both mirrored queues

All exchanges are declared as fanout

I'm running a RabbitMQ cluster with multiple nodes - so queues can be master on different nodes


If I publish to Exchange A - do i then either get my message published to all or no of the queues?

I'm currently running in Confirm mode - what would a confirm mean after a publish here?

Hope above makes sense - thanks!

StefanE
  • 817
  • 6
  • 20
  • What have you tried and observed? – Luke Bakken Feb 16 '19 at 21:51
  • My challenge is haven't observed so much yet - i'm not sure i have the tools to actually introduce a disk failure while having published a message to exchange A. For instance what if B1 receives message however C1 master is failing before being stored on disk? – StefanE Feb 17 '19 at 16:36

1 Answers1

0

If I publish to Exchange A - do i then either get my message published to all or no of the queues?

Since you are using fanout exchanges, queue B1 and C1 will get any message published to exchange A. This is simple for you to test yourself - try it out!

I'm currently running in Confirm mode - what would a confirm mean after a publish here?

I'm not really sure what purpose your intermediate exchanges (B and C) are serving here. If you remove them, you can be certain that publisher confirms will work as you expect. With the intermediate exchanges ... I can't say off the top of my head. This would be an excellent question for the rabbitmq-users mailing list.

Luke Bakken
  • 8,993
  • 2
  • 20
  • 33