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