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