2016-10-14 6 views
0

Я работаю над приложением ActiveMQ, где iam использует пользователя, который использует Session.CLIENT_ACKNOWLEDGE.Как получить старые сообщения в очереди ActiveMQ

Iam отправляет сообщения, полученные из очереди в потребитель, в webservice. Если я надену message.acknowledge(), все сообщения, отправленные в webservice, вернутся в очередь в состоянии очереди.

Мой вопрос заключается в том, чтобы получить сообщения снова из очереди и использовать it.I используется ретроактивный = истинный и попытался Redelivery также, но все они терпят неудачу.

Как этого избежать.

ответ

0

Если вы используете message.acknowledge(), все потребляемые сообщения снова недоступны в той же очереди, потому что считаются поставленными!

Вы можете объяснить, почему вам нужно снова потреблять уже принятые сообщения. retroactive предназначен для потребителей, которые были в автономном режиме и при запуске подключения для приема сообщений, отправленных до подключения.

В этом случае вам необходимо настроить политику предварительной выборки для потребителя до 400. Вы можете прочитать, чтобы понять концепцию http://activemq.apache.org/what-is-the-prefetch-limit-for.html

Если вы хотите обрабатывать сообщения один за другим с помощью счетчика, вам необходимо установить предварительную выборку в 1 и подтвердить каждое сообщение, когда вы лечите 200, которые вы не признаете.

+0

Логика проста Я получаю сообщение от activemq, отправляю его в webservice, если я получаю 200OK, я делаю message.acknowledge(), и если я получаю что-либо, кроме 200 OK, я не хочу выполнять message.acknowledge(), который делает сообщение возвращается в состояние enqueued, и я хочу повторить отправку сообщения снова. Как это сделать –

+0

Я обновил свой ответ, по умолчанию: постоянные очереди (значение по умолчанию: 1000) непостоянные очереди (значение по умолчанию: 1000). Это означает, что если вы не подтвердите 500 первых сообщений, то брокер не отправит вашему потребителю какое-либо сообщение до подтверждения –

+0

Есть ли другой способ удалить старые сообщения, которые находятся в очереди? Фактически, я столкнулся с такой же проблемой при работе с истекшим сроком действия сообщений. –