如何更改调度策略

 常见问题解答 > 使用 Apache ActiveMQ Classic > 如何更改调度策略

在 ActiveMQ Classic 4.0 中,这更加简单且功能更强大 - 您可以在 xml 配置文件中配置不同的 调度策略

目前,在 ActiveMQ Classic 3.x 中,我们有一个 PrefetchPolicy 配置。这允许在确认之前将一定数量的消息调度到消费者。此功能旨在实现高性能;值越大,客户端等待消息到达以进行处理的可能性越小,因此吞吐量越高。

例如,在繁忙系统的重负载下,您可能希望将大约 1000 条消息调度到消费者,以便一旦消费者准备好接收消息,就会有一堆消息在内存中等待使用 - 而不是每次都进行缓慢的请求-响应 RPC。

但是,这种效果是,当您发送少量消息时,它们往往会全部发送到一个消费者,除非您有很多消息。请注意,在 4.x 中可以避免此问题,因为现在有一个可配置的 DispatchPolicy,因此您可以强制执行,例如,循环调度策略,以确保消息公平地调度以避免此问题。

在 ActiveMQ Classic 3.x 或更高版本中,解决此问题的解决方法是在 ConnectionFactory/Connection 上重新配置 PrefetchPolicy,以便代理每个消费者只预取一条消息;尽管这会大大降低系统的性能和吞吐量。

在 ActiveMQ Classic 4.x 中配置调度策略

在 AMQ 4.x 中,现在可以在 xml 配置文件(即 activemq.xml)上配置调度策略,即:

<destinationPolicy>
   <policyMap><policyEntries> 
      <policyEntry topic="COMMAND.>">
         <dispatchPolicy>
           <strictOrderDispatchPolicy />
         </dispatchPolicy>
         <subscriptionRecoveryPolicy>
            <noSubscriptionRecoveryPolicy />
         </subscriptionRecoveryPolicy>
      </policyEntry>
   </policyEntries></policyMap>
</destinationPolicy>

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