AWS:在保留元信息的同时将消息移至死信队列

时间:2019-08-07 10:50:45

标签: kotlin amazon-sqs micronaut aws-java-sdk micronaut-aws

如果在处理消息时发生异常,我正在尝试将消息移至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的消息。

0 个答案:

没有答案