问题:
处理积压的消息,其中每条消息具有三个标头“服务”、“客户端”和“流”。我想以最大并发处理积压的消息,但我有一些要求:
- 一次只能处理 10 条具有相同服务的消息。
- 一次只能处理具有相同服务和客户端的 4 条消息。
- 具有相同服务和客户端和流的所有消息必须保持有序。
附加信息:
我一直在 ServiceMix(Camel + ActiveMQ)上下文中使用“maxConcurrentConsumers”和“JMSXGroupID”,我似乎能够满足我的 3 个要求中的 2 个。
例如,如果我做一些基于内容的路由将积压工作拆分为单独的“服务”队列(每个服务一个队列),那么我可以将 JMSXGroupID 设置为(服务 + 客户端 + 流),并设置 maxConcurrentConsumers=10在从每个队列消耗的路线上。这解决了第一个和最后一个要求,但是我可能有太多消息同时用于同一个客户端处理。
请注意,如果一个解决方案需要为服务+客户端的每个组合使用单独的队列和路由,那将变得难以管理,因为可能有成千上万的组合。
非常感谢任何反馈!如果我的问题不清楚,请随时建议我如何改进它。