Apache Camel + AWS SQS-首先从优先级队列中消费消息

问题描述

我有一个可以正常工作的Java应用程序,可连接到 标准 SQS队列。由于某些性能要求,我想优先处理来自某些队列的消息,而不是其他队列。

基本上,我正在寻找以下内容:

  1. 在具有一组低(L)和高(H)优先级队列的情况下,无论“ L”队列是否为空,“ H”队列的Java DSL路由都应具有优先级。
  2. 只有在处理完[H]队列中的所有消息后,“ L”队列的路由才开始使用消息。
  3. 如果消息出现在“ H”队列中,则
  4. “ L”队列的路由应该再次停止(即使该队列中有消息)。

据我了解, autoStartup 对于“ H”队列的路由必须为true。另一方面,“ L”队列的路由需要从“ H”队列的路由内开始/停止,即,一旦从“ H”队列中消费了第一条消息。

我已经研究了一些可能的方法,但是某些方法对于我的用例而言并不理想,我需要其他示例/信息,例如:

  • 将影响吞吐量的Resequencer,或者
  • 我对RoutePolicyControlBus不太了解,以了解它如何提供帮助。
  • 通过调整队列的消息池大小和并发使用者的数量来管理队列中消息的消耗速率,因为这仍然意味着“ L”队列的路由仍处于活动状态。

任何建议或代码段都非常受欢迎。期待收到回音。

谢谢!

参考文献:

  1. Elegant way to setup high-priority/low-priority route consumers of sqs with Camel RoutePolicy?
  2. How to stop camel route when there's no exchange for 10 mins
  3. https://access.redhat.com/documentation/en-us/red_hat_fuse/7.3/html/apache_camel_development_guide/basicprinciples#BasicPrinciples-StartupShutdown

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)