我有一個以非常高的速率(> 100,000 /秒)填充的JMS隊列。併發消費者尚未確保訂單
可能發生的情況是,每秒鐘可能有多個屬於同一個實體的消息。 (實體的幾次更新,每次更新都作爲不同的消息。)
另一方面,我有一個消費者處理此消息並將其發送給其他應用程序。
現在,整個設置正在放緩,因爲消費者無法應付收到的消息的速度。
因爲消費者處理消息的速度有SLA,所以我一直在玩弄讓多個消費者並行工作來加速流程的想法。
那麼,是什麼即時通訊思想做的是
- 隊列獨立工作的多個消費者。
- 每個消費者可以自由地抓住任何消息。
- 抓取消息後,確保其實體的最新版本。爲此,我可以檢查處理這個實體的應用程序。
- 如果它不是最新版本,請將版本提升並重試。
我一直在查找集成模式,JMS文檔到目前爲止沒有成功。
我希望能夠以更優雅的方式解決這個問題,以及任何已知的API,Java世界中的模式。
Apache Camel應該能夠做到這一點。 http://camel.apache.org/parallel-processing-and-ordering.html – 2012-07-19 19:45:31
謝謝。這個鏈接提供了我對這個問題的不同考慮。我將在此基礎上進一步研究。 – 2012-07-19 19:51:12
讓我知道這是否有效。如果有效,我會發表評論作爲答案,以便您可以接受。 – 2012-07-25 13:49:22