Benoit Tellier created JAMES-3604:
-------------------------------------

             Summary: RabbitMQ: allow the use of quorum queues
                 Key: JAMES-3604
                 URL: https://issues.apache.org/jira/browse/JAMES-3604
             Project: James Server
          Issue Type: Improvement
          Components: rabbitmq
    Affects Versions: 3.6.0
            Reporter: Benoit Tellier
             Fix For: 3.7.0


Having watched a talk about quorum queues [1] and read [2] RabbitMQ HA guide 
and [3] RabbitMQ Quorum Queue guide, setting up a higly available RabbitMQ 
cluster should be reasonnably easy.

 - Exchanges (and their bindings) are replicated out of the box to all nodes.

 - Queues can be declared as "quorum" and thus uses RAFT algorithm for 
replication.

This can be done via the use of `x-queue-type` with value `quorum`. Also 
`x-quorum-initial-group-size` allow controlling the replication factor.

We should allow to choose between `classic` queues or `quorum` queues based on 
the configuration. (classic queues are likely faster in a single queue case).

 - We likely SHOULD use publish-confirms (we don't...)

Regarding limitations...

> Consumers should use manual acknowledgements to ensure messages that aren't 
> successfully processed are returned to the queue so that another consumer can 
> re-attempt processing.

So it is meaningless to switch our auto-ack queues to quorum queues.

> In some cases quorum queues should not be used. They typically involve [...] 
> exclusive queues.

So let's not switch our exclusive queues to it.

This means we can turn the EventBus and MailQueue work queues to use quorum 
queues.

[1] 
https://tanzu.vmware.com/content/webinars/jun-11-ha-and-data-safety-in-messaging-quorum-queues-in-rabbitmq?utm_campaign=Global_BT_Q221_RabbitMQ-Data-Safety-in-Messaging&utm_source=rabbitmq&utm_medium=website

[2] https://www.rabbitmq.com/clustering.html

[3] https://www.rabbitmq.com/quorum-queues.html



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to