【问题标题】:How does Artemis federation priority-adjustment work?Artemis 联邦优先级调整是如何工作的?
【发布时间】:2021-02-18 18:48:57
【问题描述】:

根据the document,优先级调整是指

当消费者附加它的优先级时,它的优先级用于使上游消费者,但默认调整为 -1,以便本地消费者首先获得负载平衡,而不是远程,这使得它可以在需要/需要时进行配置。

因此,优先级调整可以控制数据流的方向。当优先级调整 = -1 时,broker 会先将数据传输到远程,而不是在本地使用。

在两个集群之间迁移。消费者和发布者可以按任何顺序移动,并且消息不会被复制(如果您进行交换联合,就是这种情况)。相反,当您的消费者在那里时,消息会被传输到新集群。对于蓝/绿或金丝雀在同一队列中移动多个消费者的这种迁移,您可能希望将优先级调整设置为 0,甚至是正值,以便消息主动流向联合队列。

这是否意味着当优先级调整为大于等于0的整数时,一旦远程消费者产生,broker会更愿意将消息传递给远程消费者而不是本地消费者?如果在两个聚类条件下优先级为负,会发生什么? 我还看到一些示例将优先级调整为 -1/0 以外的值,我不知道这个值是如何工作的。 我还找到了一些关于ActiveMQ message priority setting 的文档,这似乎不适用于Artemis。 请告诉我有关“priority-adjustment”参数含义的详细信息。

【问题讨论】:

    标签: activemq-artemis federation


    【解决方案1】:

    ActiveMQ Artemis 从上游队列检索消息,以满足连接到联合队列的本地消费者对消息的需求。 为了从上游队列检索消息,它使用本地消费者的优先级创建一个远程消费者,并使用优先级调整值 adjustedPriority = consumer.getPriority() + priorityAdjustment 调整。

    调整后的远程消费者的优先级作为附加到上游队列的本地消费者的consumer priority。只有当高优先级的消费者没有足够的信用来消费消息,或者那些高优先级的消费者拒绝接受消息时,消息才会发送给低优先级的消费者。

    如果所有消费者(上游和下游)具有相同的优先级。当优先级调整 = -1 时,本地消费者应该先接收消息,然后是远程消费者。

    【讨论】:

    • 如果docker倾向于向优先级较高的用户发送消息,并且使用默认优先级0,当上游优先级调整=-1时,本地用户是否应该先收到消息?
    • 如果所有消费者(上游和下游)具有相同的优先级。当优先级调整 = -1 时,本地消费者应该先接收消息,然后是远程消费者。我已经用这条评论更新了我的答案。
    猜你喜欢
    • 2013-03-28
    • 2021-12-27
    • 2012-05-18
    • 2018-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    相关资源
    最近更新 更多