将SQS消息移动​​到不同的队列

时间:2016-03-02 22:22:55

标签: java amazon-web-services amazon-sqs

有没有办法将邮件从一个队列移动到另一个队列?我们有一种情况,由于资源不可用,消息可能最终在DLQ中。问题解决后,我们希望将邮件移回原始队列并再次处理。对于我们的跟踪目的,如果保留原始MessageId和SentTimestamp,它会很好。

我发现的最接近的事情是创建一个新的SendMessageRequest对象并复制该消息的内容。但这将创建一个带有新ID和时间戳的全新消息。

当移动消息时,DLQ将保留id和时间戳。难道不能以某种方式扭转这一行动吗?

1 个答案:

答案 0 :(得分:2)

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

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

您可以在您的申请中做到:

  • 能够从两个队列中进行选择(在正常操作模式下,您只能拥有正常队列)。您在重新处理时启用DLQ
  • 在您重新排队时在邮件正文中标记messageid和时间戳,并在您的应用程序中首先查看邮件正文,然后再查看邮件本身。 (你仍然需要使用sqs指定的messageid来处理处理)