我正在使用amazon sqs java扩展客户端库来存储S3中的所有SQS消息。当我使用Amazon SQS Web界面删除消息时,消息仅从SQS队列中删除,而不是从S3中删除。但是,当我使用aws java sdk sqs客户端/扩展库客户端时,消息将从SQS和S3中删除。我想在S3中保留实际的消息,但只是摆脱了SQS消息。有没有办法可以使用aws java sdk sqs客户端或扩展客户端以编程方式实现此目的?
答案 0 :(得分:1)
您可以创建(并维护)扩展客户端库的自定义版本,但从长远来看,这不是一个很好的解决方案。
另一种方法是使用S3事件通知,它可以为上传到S3存储桶的每个文件自动创建SQS消息。您的生产者需要更改为使用S3 API上传文件(而不是扩展的客户端库来排队消息)。您的消费者将继续使用SQS来接收消息,但会使用普通库而不是扩展库。您的S3存储桶为configured to send event notifications。
也许另一种选择是尝试模仿您通过SQS控制台手动完成的操作。如果您可以通过使用扩展客户端库接收SQS消息(以及存储在S3中的消息正文)来获得您正在寻找的效果,我不会感到惊讶。然后,使用普通客户端库删除该消息。由于普通客户端库不知道消息的S3组件,因此不应删除S3文件。