如何變更分派策略
常見問題 > 使用 Apache ActiveMQ Classic > 如何變更分派策略
在 ActiveMQ Classic 4.0 中,這變得更簡單且更強大 - 您可以直接配置不同的分派策略。
目前在 ActiveMQ Classic 3.x 中,我們有一個 預先提取策略配置。這允許在確認之前,將一定數量的訊息分派給消費者。此功能旨在實現高效能;值越高,客戶端等待訊息到達後再進行處理的可能性就越低,因此吞吐量就越高。
例如,在高負載的繁忙系統下,您可能想要分派 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>