activemq-artemis - Artemis 联邦优先级调整是如何工作的?
问题描述
根据文件,优先级调整是指
当消费者附加其优先级时,它的优先级用于创建上游消费者,但默认调整为 -1,以便本地消费者首先获得负载平衡,而不是远程,这使得它可以在需要/需要时进行配置。
因此,优先级调整可以控制数据流的方向。当优先级调整 = -1 时,broker 将首先将数据传输到远程,而不是在本地使用它。
在两个集群之间迁移。消费者和发布者可以按任何顺序移动,并且消息不会重复(如果您进行交换联合,就是这种情况)。相反,当您的消费者在那里时,消息会被传输到新集群。对于蓝/绿或金丝雀在同一队列上移动多个消费者的这种迁移,您可能希望将优先级调整设置为 0,甚至是正值,以便消息主动流向联合队列。
这是否意味着当优先级调整为大于等于0的整数时,一旦远程消费者产生,broker会更愿意将消息传递给远程消费者而不是本地消费者?如果在两个聚类条件下优先级为负,会发生什么?我还看到一些示例将优先级调整为 -1/0 以外的值,我不知道这个值是如何工作的。我还找到了一些关于ActiveMQ 消息优先级设置的文档,这似乎不适用于 Artemis。请告诉我有关“优先级调整”参数含义的更多详细信息。
解决方案
ActiveMQ Artemis 从上游队列检索消息,以满足连接到联合队列的本地消费者对消息的需求。为了从上游队列中检索消息,它使用通过优先级调整值调整的本地消费者的优先级创建一个远程消费者adjustedPriority = consumer.getPriority() + priorityAdjustment
。
调整后的远程消费者优先级作为附加到上游队列的本地消费者的消费者优先级。只有当高优先级的消费者没有信用来消费消息,或者那些高优先级的消费者拒绝接受消息时,消息才会发送给低优先级的消费者。
如果所有消费者(上游和下游)具有相同的优先级。当优先级调整 = -1 时,本地消费者应该先接收消息,然后是远程消费者。
推荐阅读
- javascript - 如何在 InAppPurchase Ionic 3 中进行收据验证
- javascript - 在闭包中改变函数的行为
- react-native - 如何让启动画面保持更长时间?(世博会cli)
- php - 编辑 php.ini 为 Docker 和 Drupal 启用 XDebug
- python - 数据框问题,连接 2 个数据框,但避免出现空行
- regex - 为 C++ 标头保护实现 VSCode 片段
- eclipse - 如何将 Maven 项目定义为另一个 Maven 项目的依赖项,以便在 Eclipse 中进行调试?
- apache - 从 Stretch 升级到 Buster 后,apache2.4 mod ldap 无法连接到 2012R2 LDAP
- python - 记住在烧瓶中呈现模板时 CSS 样式表的变化
- c# - 如何在多个 Godot-mono 项目中重用 C# 代码