发生错误时如何暂停或减少 Camel Hazelcast SEDA 消费者的吞吐量
Posted
技术标签:
【中文标题】发生错误时如何暂停或减少 Camel Hazelcast SEDA 消费者的吞吐量【英文标题】:How to suspend or reduce throughput of Camel Hazelcast SEDA consumer in case of error 【发布时间】:2015-07-31 23:43:34 【问题描述】:我有一条 Camel 路线使用来自 Hazelcast SEDA 队列的消息。如果处理消息时出现任何错误,我想减少消耗的吞吐量,以避免将大量消息移动到死信队列。我一直在调查使用http://camel.apache.org/throttler.html 进行黑客攻击 具有动态值和断路器:http://camel.apache.org/load-balancer.html 但没有成功。
还有其他方法可以做到这一点吗?
【问题讨论】:
【参考方案1】:为了提供此功能,我结束了构建自己的(也是第一个)Camel 组件:
https://github.com/rodolfodpk/camel-hz-queue
【讨论】:
【参考方案2】:是您的另一条骆驼路线向该 Seda 消费者发送消息吗?在这种情况下,您可以在该端点上使用 Throttler。像这样的:
<route>
<from uri="....." />
<throttle maximumRequestsPerPeriod="3" timePeriodMillis="10000">
<to uri="hazelcast:seda:foo" />
</throttle>
</route>
<route>
<from uri="hazelcast:seda:foo" />
<to uri="....." />
</route>
【讨论】:
以上是关于发生错误时如何暂停或减少 Camel Hazelcast SEDA 消费者的吞吐量的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Apache Camel 从 Java 类访问 JMS 队列?
如何在apache camel DSL或camel Processor内部设置其他身份验证属性?
当异常消息转到camel中的deadLetterChannel时,如何将MultipartEntityBuilder转换为inputStream?