动态调节一个ActiveMQ消息队列与骆驼
我是一个ActiveMQ /骆驼noob与心中的具体情况,我想知道如果这是可能的,其次是否有人可能提供一个小方向。动态调节一个ActiveMQ消息队列与骆驼
基本上我需要从队列中执行动态调节。 I.E在运行时设置从队列中消耗特定消息组的速率的能力。
例如,我可能会添加一组将消耗在每秒10个消息的消息,另一个组应该以每秒1个消耗等等。
我知道设置骆驼和消息分组到队列等路线的基本知识,但只是不能从文档中弄清楚这一点。
是啊看起来像你正在寻找经纪人侧throtteling,以避免消费者阻止。
您是否在ActiveMQ用户/开发论坛中提出了您的请求?
为什么不在Apache Camel JIRA中添加RFE?
对于给定的一组消息,确定速率的逻辑是什么?
如果不同的消息组通过同一个调节器,它可能会变得复杂。它需要鉴别器来确定它属于哪个组的哪个消息,因此哪个速率应该通过调节器。
如果您需要一些时间来填写您的用例并记录RFE,那么我确信骆驼社区,开发人员可以提供帮助。
你可以尝试自己实现它。基本上任何东西都是一个Processor,所以你可以做一个from(“activemq:queue:foo”)。process(myOwnThrottler).to(“bean:handleMessage”);
可以延长一些类的骆驼: - DelegateProcessor - DelayProcessorSupport - 节流
克劳斯易卜生 Apache的骆驼提交者
开源集成:http://fusesource.com 博客:http://davsclaus.blogspot.com/
你可以使用骆驼现有的throttler然后为每种类型的消息使用不同的队列,您需要配置不同的节流率?
例如
from("activemq:Queue1.Input").
throttle(20).
to("activemq:Queue1.Output");
from("activemq:Queue2.Input").
throttle(5).
to("activemq:Queue2.Output");
OK,我会稍微详细地制定出方案并尽可能我可以告诉突出主要拦截。
我有两组消息(实际上规模要大得多),每个消息都有不同的限制要求 - 比方说,我在消息标题中将其指定为flowRate和flowTime。
- 组1:FlowRate = 1; flowTime = 60(1每分钟)
- 组2:FlowRate = 1;流动时间= 1 (1每秒)
我实现处理器按照Claus其检查报头字段,并用它们作为延迟输入。
我从组1和20000从组中添加20000个消息2
由于调节器是消费者侧,由第1组激活延迟将导致其通过快速填充它的输入缓冲器和第2级的消息,成为缓慢将然后卡住...即使我按照James使用多个队列。
我意识到我可以使用JMXGroupID标头对消息进行分组并实现多个使用者,但不要认为这会扩展到适应组和组的要求。
我基本上想知道的是,如果有任何方法可以做代理,而不是消费者侧调节,或者其他解决方案,消费者可以调节而不会最终阻止。
希望我已经清楚地解释了自己,并感谢迄今为止提出的建议。
刚刚买了你的书“骆驼在行动”克劳斯的EAP副本。这是非常好的,我可以肯定地推荐给任何其他人抓住,或想了解更多关于骆驼。非常深入的东西。 – mysomic 2010-09-05 12:21:16