NMS.ActiveMQ 消费者分发异步

概述

从 ActiveMQ 4 开始,经纪人对消费者执行同步或异步分发的选择变得更加可配置。现在,它被配置为连接 URI、连接和连接工厂上的默认值,并且可以通过目标选项在每个消费者基础上进行自定义,而不是以前仅仅是传输服务器设置。

这样做更有意义,因为您希望对较慢的消费者进行异步消息传递,但对较快的消费者进行同步消息传递(以避免添加另一个 seda 队列的同步和上下文切换成本)。使用同步消息传递的缺点是,如果生产者要分发消息给缓慢的消费者,则生产者更有可能阻塞。

默认设置为 dispatchAsync=true,这是高性能的最佳设置。如果您想更好地处理缓慢的消费者,您需要启用此设置。如果您希望获得更好的吞吐量,并且缓慢的消费者可能性较小,您可能需要将其更改为 false。

在连接工厂级别配置分发异步

connectionFactory.DispatchAsync = false;

在连接级别配置分发异步

在此级别配置 dispatchAsync 设置将覆盖连接工厂级别的设置。

connection.DispatchAsync = false;

使用目标 URI 在消费者级别配置分发异步

使用目标选项配置 dispatchAsync 将覆盖连接和连接工厂级别的设置。

var queue = new ActiveMQQueue("TEST.QUEUE?consumer.dispatchAsync=false");
var consumer = session.CreateConsumer(queue);

Apache、ActiveMQ、Apache ActiveMQ、Apache 羽毛徽标和 Apache ActiveMQ 项目徽标是 Apache 软件基金会的商标。版权所有 © 2024,Apache 软件基金会。根据Apache 许可证 2.0许可。