grouping - ActiveMQ Artemis 消息分组领导选举
问题描述
我们正在使用 ActiveMQ Artemis 节点集群,并且我们希望使用消息分组功能。从文档中,我们了解到我们需要确定 1 个节点作为此功能的主节点。有没有办法让集群本身自动动态地完成这个选举?
如果没有,假设我们自己做,有没有办法动态更改节点的消息分组设置而无需重新启动它?
我们正在使用 EmbeddedActiveMQ。
问候尼古拉斯
解决方案
无法动态“选择”将做出消息分组决策的节点。它必须静态配置。此外,如果不重新启动代理,就无法更改配置。
也就是说,我鼓励您查看ActiveMQ Artemis 文档中的此说明:
一般来说,结合集群和消息分组是一个糟糕的选择,因为分组(即有序)消息和通过集群进行水平扩展的基本思想本质上是相互矛盾的。
消息分组强制执行有序的消息消费。有序消息消费要求在消费组中的下一条消息之前,每条消息都被完全消费并确认。这导致串行消息处理(即没有并发)。
但是,集群的想法是水平扩展代理,以便通过添加可以同时处理消息的消费者来增加消息吞吐量。但是由于消息组是有序的,因此每个组中的消息不能同时被消费,这违背了水平扩展的目的。
推荐阅读
- z3 - z3 Solver 和 solve 给出不同的结果
- reactjs - 单击按钮后组件应呈现 EditChannel 组件应呈现
- image - Monosnap on Windows - Shortcut key setting to copy to clipboard
- d3.js - 在 d3.js 中绘制 bezierCurve
- java - Cartesian Product of PCollection with itself
- c# - 评估字符串表达式并转换为布尔值?
- solr - SOLR:facet.field 对字段中的每个单词的工作方式不同,如何将 facet.field 应用于整个字段句子?
- r - 给定组开始指示符,分配顺序组 ID
- python - TypeError: my_task() 接受 2 个位置参数,但给出了 3 个
- .net-core - .net 瞬态数据库上下文被过早处理