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

Reply via email to