2015-05-22 2 views
0

Я использую стратегию закрытия по умолчанию в своем тексте camelcontext. Маршрут начинается с потребителя rabbitmq, который потребляет из очереди более 10 тыс. Сообщений. Когда я останавливаю маршрут, потребитель продолжает потреблять новые сообщения из очереди. Следовательно, подсчет обмена светом никогда не уменьшается, и маршрут ждет завершения до значения тайм-аута по умолчанию (300 секунд). Есть ли способ изменить это поведение? В основном остановите потребителя rabbitmq от потребления новых сообщений при завершении работы.Camel ShutdownStrategy: Inflight Сообщения не уменьшаются

ответ

0

Рекомендуется сохранять тайм-аут во время выключения вашего маршрута, так как это позволит время для изящного отключения вашего маршрута, и если оно не сможет изящно выполнить остановку, тогда оно будет принудительно завершено , Ниже приведены несколько ссылок на дополнительную информацию об использовании стратегии завершения по умолчанию.

https://access.redhat.com/documentation/en-US/Red_Hat_JBoss_Fuse/6.1/html-single/Apache_Camel_Development_Guide/#BasicPrinciples-StartupShutdown

http://camel.apache.org/graceful-shutdown.html

http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/impl/DefaultShutdownStrategy.html

В последней ссылке, которую я рекомендовал бы глядя на раздел ShutdownRunningTask документа, как швы вы работаете потребитель, который потребляет, как пакетного потребителя.

+0

У меня есть набор тайм-аутов. Проблема в том, что мои потребители не перестают потреблять, пока маршрут закрывается. Это предотвращает изящное завершение работы. – user3487839

+0

Можете ли вы разместить свой код здесь? Также, чтобы подтвердить, что вы говорите, это то, что, когда вы останавливаете своего потребителя верблюда, который активно потребляет из очереди, он не останавливается, пока все сообщения не будут потреблены из очереди? – nerdyoutdoorsman

0

У меня такая же проблема с вами. Дело в том, что, закрывая, Верблюд предпочитает приостанавливать потребителей, а не закрывать их. В настоящее время потребитель RabbitMQ не реализует метод suspend(). Проблема будет исправлена ​​в версии 2.16.2

Смежные вопросы