2016-05-19 3 views
0

Я пытаюсь использовать очередь ActiveMQ как Apache Storm Spout.active mq delay recovery

Я использую стратегию «INDIVIDUAL_ACK».

В моей идее я планирую периодически запускать session.recover(), чтобы повторно отправлять сообщения, которые не были бы подтверждены (ошибка в цепочке обработки Bolt).

Но если я это сделаю, все сообщения, соответствующие кортежу Storm, в настоящее время обработаны, будут вызваны. Я попытался бы ограничить это явление.

В идеале я хотел бы параметр задержки, все посланное сообщение моложе, что эта задержка не должна быть повторно (эта задержка должна быть в фазе с тайм-аутом обработки кортежа Бури)

Я прочитал о политике AMQ (http://activemq.apache.org/redelivery-policy.html), но я не уверен, что параметр redeliveryDelay применяется к моей проблеме.

Подсказка?

Franck

ответ

0

С INDIVIDUAL_ACKNOWLEDGE вы не используете session.recover(), вы делаете message.acknowledge(). Кроме того, рекомендуется использовать только транзакции типа JMS для автоматически восстанавливаемых ошибок (т. Е. Хост не работает). Для контекстной проблемы (т. Е. Плохих данных), которая никогда не будет работать, вы должны переместить сообщение в другую очередь, то есть в некоторую очередь .DLQ или .ERR.

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