AWS: переместить сообщение в очередь недоставленных сообщений при сохранении метаинформации

Я пытаюсь переместить сообщение в очередь недоставленных сообщений в AWS, если при обработке сообщения возникла исключительная ситуация.

Теперь я удаляю исходное сообщение и отправляю его в DLQ явно. Однако при этом я теряю метаинформацию сообщения, такую ​​как исходный идентификатор сообщения, общее количество полученных, отметка времени первой отправки и т. Д.

Ниже приведен фрагмент кода для того же.

@Inject
@Named("demo-queue")
private SimpleQueueService sqsService;

@Inject
@Named("dlq")
private SimpleQueueService dlqService;

.
.
.

List<Message> messages = sqsService.receiveMessages(10, 30, 20);

messages.forEach(
        m -> dlqService.sendMessage(m.getBody(),
                attr -> {
                    new SendMessageRequest()
                        .withMessageAttributes(m.getMessageAttributes())
                        .withMessageBody(m.getBody());
                    })
            );

messages.forEach(message -> sqsService.deleteMessage(message.getReceiptHandle()));

При достижении максимального количества получаемых сообщений, когда AWS перемещает сообщение из исходной очереди в DLQ, оно сохраняет все упомянутые атрибуты. Есть ли способ достичь того же, используя aws-sdk?

Я использую библиотеку Agorapulse с Micronaut для отправки / получения сообщений от SQS.

0 ответов

Другие вопросы по тегам