You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2019/12/10 02:30:04 UTC

[james-project] 01/27: JAMES-2813 ADR about the new distributed workqueue design

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 <ra...@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-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org