This is an automated email from the ASF dual-hosted git repository. btellier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit de105cc63048d7594b3626065d5c1a503afe6f53 Author: Raphael Ouazana <raphael.ouaz...@linagora.com> AuthorDate: Tue Dec 3 15:05:46 2019 +0100 JAMES-2813 ADR about the new distributed workqueue design --- src/adr/0003-distributed-workqueue.md | 2 ++ src/adr/0016-distributed-workqueue.md | 29 +++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/src/adr/0003-distributed-workqueue.md b/src/adr/0003-distributed-workqueue.md index 832a93e..7bf3337 100644 --- a/src/adr/0003-distributed-workqueue.md +++ b/src/adr/0003-distributed-workqueue.md @@ -6,6 +6,8 @@ Date: 2019-10-02 Accepted (lazy consensus) +Superceded by [16. Distributed WorkQueue](0016-distributed-workqueue.md) + ## Context By switching the task manager to a distributed implementation, we need to be able to run a `Task` on any node of the cluster. diff --git a/src/adr/0016-distributed-workqueue.md b/src/adr/0016-distributed-workqueue.md new file mode 100644 index 0000000..f2db6b9 --- /dev/null +++ b/src/adr/0016-distributed-workqueue.md @@ -0,0 +1,29 @@ +# 16. Distributed WorkQueue + +Date: 2019-12-03 + +## Status + +Accepted (lazy consensus) + +Supercedes [3. Distributed WorkQueue](0003-distributed-workqueue.md) + +## Context + +By switching the task manager to a distributed implementation, we need to be able to run a `Task` on any node of the cluster. + +## Decision + + For the time being we will keep the sequential execution property of the task manager. + This is an intermediate milestone toward the final implementation which will drop this property. + + * Use a RabbitMQ queue as a workqueue where only the `Created` events are pushed into. + Instead of using the brittle exclusive queue mechanism described in [3. Distributed WorkQueue](0003-distributed-workqueue.md), we will + now use the natively supported [Single Active Consumer](https://www.rabbitmq.com/consumers.html#single-active-consumer) mechanism. + + +## Consequences + + * This solution is safer to use in production: if the active consumer dies, an other one is promoted instead. + * This change needs RabbitMQ version to be at least 3.8.0. + * The serial execution of tasks still does not leverage cluster scalability. --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org