2016-03-02 5 views
0

Есть ли способ переместить сообщение из одной очереди в другую? У нас есть случай, когда сообщения могут оказаться в DLQ из-за недоступности ресурса. Как только проблема будет решена, мы переместим сообщение обратно в исходную очередь и снова обработаем его. Для наших целей отслеживания было бы неплохо, если бы сохранились оригинальные MessageId и SentTimestamp.Переместить сообщение SQS в другую очередь

Самое близкое, что я нашел, это создание нового объекта SendMessageRequest и копирование содержимого сообщения. Но это создаст новое сообщение с новым идентификатором и меткой времени.

При перемещении сообщения DLQ идентификатор и временная метка сохраняются. Нельзя ли как-то просто отменить это действие?

ответ

2

Нет. Вы не можете сохранить идентификатор сообщения при переходе между очередями. SQS дает идентификатор и метку времени:

http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/ImportantIdentifiers.html

Что вы можете сделать, это в вашем приложении вы либо:

  • имеют возможность выбрать из двух очередей (и в обычном режиме работы вы просто иметь обычную очередь). вы включаете DLQ при переработке
  • вы печатаете messageid и метку времени в теле сообщения, когда вы запрашиваете, и в своем приложении вы сначала смотрите в теле сообщения, прежде чем смотреть на само сообщение. (вам все равно необходимо использовать назначенный sqs messageid для обработки обработки)
Смежные вопросы