Я пытаюсь настроить 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, но я хочу разрешить это при обмене.