DLQ вступает в игру только тогда, когда исходный потребитель не может успешно принять сообщение после различных попыток. Мы не хотим удалять сообщение, так как считаем, что мы все еще можем что-то с ним сделать (возможно, попытаться снова обработать или зарегистрировать его или собрать некоторую статистику), и мы не хотим снова и снова сталкиваться с этим сообщением и останавливать возможность обрабатывать другие сообщения за этим.
DLQ - это не что иное, как очередная очередь. Это означает, что нам нужно будет написать потребителя для DLQ, который в идеале работал бы реже (по сравнению с исходной очередью), который потреблял бы из DLQ и возвращал сообщение в исходную очередь и удалял его из DLQ - если это предполагаемое поведение, и мы думаем исходный потребитель теперь будет готов обработать его снова. Если этот цикл продолжится какое-то время, все должно быть в порядке, поскольку теперь у нас также есть возможность вручную проверить и внести необходимые изменения и развернуть другую версию исходного потребителя без потери сообщения (конечно, в течение периода хранения сообщения, который составляет 4 дня к по умолчанию).
Было бы неплохо, если бы AWS предоставил эту возможность из коробки, но я ее еще не вижу - они оставляют это на усмотрение конечного пользователя, чтобы использовать его так, как они считают нужным.