0

如果在处理消息时出现异常,我正在尝试将消息移动到 AWS 中的死信队列。

现在我正在删除原始消息并将其显式发送到 DLQ。但是,在执行此操作时,我会丢失消息元信息,例如原始消息 ID、总接收计数、首次发送时间戳等。

下面是相同的代码片段。

@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 实现相同的目标吗?

我正在使用带有 Micronaut 的 Agorapulse 库来发送/接收来自 SQS 的消息。

4

0 回答 0