Как приостановить или уменьшить пропускную способность потребителя Camel Hazelcast SEDA в случае ошибки

У меня есть маршрут Camel, использующий сообщения из очереди Hazelcast SEDA. В случае какой-либо ошибки при обработке сообщения я хочу уменьшить потребляемую пропускную способность, чтобы избежать перемещения большого количества сообщений в очередь недоставленных сообщений. Я исследовал возможность взлома чего-либо с помощью http://camel.apache.org/throttler.html. с динамическими значениями и прерывателем цепи: http://camel.apache.org/load-balancer.html но безуспешно.

Есть ли другой подход для этого?


person Rodolfo    schedule 19.05.2015    source источник


Ответы (2)


Это еще один ваш Camel Route, который отправляет сообщения этому потребителю 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>
person Ramin Arabbagheri    schedule 20.05.2015

Чтобы реализовать эту функцию, я завершил создание собственного (и первого) компонента Camel:

https://github.com/rodolfodpk/camel-hz-queue

person Rodolfo    schedule 30.05.2015