Конфигурация RabbitMQ - Задержка и Очередь ошибок с использованием счетчика - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь настроить RabbitMQ. Не знаю, возможно ли это или есть лучшее решение.

Я работаю с клиентом Java и хочу после исключения AmqpRejectAndDontRequeueException RabbitMQ.перенаправить сообщение в другую очередь и подождать некоторое время.После этого сообщение снова поступает в первую очередь, и рабочий процесс повторяется, пока один счет не достигнет значения, и в этот момент сообщение будет перенаправлено в очередь ошибок и останется там.

Я хочу это без изменений вJava-кодЯва просто знает о первой очереди.

Я почти сделал это:

2 exchange 3 queues:
queue.active (dlx exchange.to_wait)(the queue that the java knows) 
queue.waiting (ttl 60sec dlx to exchange.to_active_or_error)
queue.error
exchange.to_wait(direct type,  binded to queue.waiting)
exchange.to_active_or_error(header type, redirect to active ou error AND THAT IS THE PROBLEM)

Проблема: в заголовке есть счетчик, и было бы легко, если бы я мог его использоватьв обмене заголовками (exchange.to_active_or_error), но счет находится в заголовке x-death, который является массивом json, и счетчик является лишь одним из атрибутов этого:

x-death=[
 {reason=expired, count=3, exchange=exchange.waiting, routing-keys=[], 
    time=Mon Jan 28 18:23:50 BRST 2019, queue=q.ehh2}, 
 {reason=rejected, count=3, exchange=exchange.active, routing-keys=[], 
    time=Mon Jan 28 18:22:50 BRST 2019, queue=queue.active}]

Как я могу это сделать?Любая идея?Другое решение?

Помните: я могу прочитать заголовок x-death [position] .count в коде java, но я хочу разрешить это при обмене.

...