8.5. 设置消息的消耗率
您可以规范消费者可以消耗消息的速度。也称为 限流,它确保使用者不会以比配置允许的速度更快地消耗消息。
注意
限速流控制可与基于窗口的流控制结合使用。速率限制流控制仅影响客户端每秒可以使用的消息数量,而不影响其缓冲区中消息的数量。通过慢速限制和基于窗口的高限制,客户端的内部缓冲区会快速填充消息。
速率必须是正整数,才能启用此功能,它是每秒消息单位指定的最大所需消息消耗率。将速率设置为 -1 可禁用速率限制流控制。默认值为 -1。
以下示例显示了一个客户端,它将消息使用率限制为每秒 10 条消息。
流程
如果客户端使用 JNDI 来实例化其连接工厂,在连接字符串 URL 中包括
consumerMaxRate参数。将 URL 存储在 JNDI 上下文环境中。以下示例使用jndi.properties文件存储 URL。java.naming.factory.initial=org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory java.naming.provider.url=tcp://localhost:61616?consumerMaxRate=10如果客户端不使用 JNDI 来实例化其连接工厂,请将值传递给
ActiveMQConnectionFactory.setConsumerMaxRate()。ConnectionFactory cf = ActiveMQJMSClient.createConnectionFactory(...) cf.setConsumerMaxRate(10);
其他资源
有关如何限制消费者速率的工作示例,请查看 <install-dir>/examples/standard 中的 consumer-rate-limit 示例。