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.