关于java:将SQS消息移至其他队列

Move SQS Message To Different Queue

是否可以将消息从一个队列移到另一个队列?我们有一种情况,由于资源不可用,消息可能最终出现在DLQ中。解决问题后,我们希望将邮件移回原始队列,然后再次进行处理。对于我们的跟踪目的,最好保留原始的MessageId和SentTimestamp。

我找到的最接近的东西是创建一个新的SendMessageRequest对象,并将消息的内容复制过来。但这将创建一条具有新ID和时间戳的全新消息。

当移动消息DLQ时,将保留id和时间戳。


不。在队列之间移动时,您无法保留消息ID。 SQS为您提供ID和时间戳:

http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/ImportantIdentifiers.html

您可以在应用程序中执行以下操作之一:

  • 可以从两个队列中进行选择(在正常操作模式下,您只有正常队列)。您在重新处理时启用DLQ
  • 重新排队时,您可以在消息正文中标记messageid和时间戳,在应用程序中,您首先要查看消息正文,然后再查看消息本身。 (尽管您仍然需要使用sqs分配的messageid来确认处理)