2016-09-12 58 views
0

私はamazon sqs java拡張クライアントライブラリを使用して、すべてのSQSメッセージをS3に保存しています。 Amazon SQS Webインターフェイスを使用してメッセージを削除すると、メッセージはS3からではなくSQSキューからのみ削除されます。しかし、aws java sdk sqsクライアント/拡張ライブラリクライアントを使用すると、メッセージはSQSとS3の両方から削除されます。私はS3で実際のメッセージを保持するために探していますが、ただSQSメッセージを取り除くだけです。 aws java sdk sqsクライアントまたは拡張クライアントを使用してプログラムでこれを実現できる方法はありますか?基本S3オブジェクトを削除せずにSQSメッセージを削除する

答えて

0

拡張クライアントライブラリのカスタムバージョンを作成(および維持)することはできますが、それは長期的には素晴らしい解決策ではありません。

また、S3イベント通知を使用して、S3バケットにアップロードされた各ファイルに対してSQSメッセージを自動的に作成することもできます。プロデューサーはS3 APIを使用してファイルをアップロードするように変更する必要があります(メッセージをキューに入れる拡張クライアントライブラリではなく)。消費者はSQSを引き続き使用してメッセージを受信しますが、拡張ライブラリではなく通常のライブラリを使用します。 S3のバケットはconfigured to send event notificationsになります。

おそらく、もう1つの方法は、SQSコンソールを使って手動で行ったことを模倣しようとすることです。拡張クライアントライブラリを使用してSQSメッセージ(およびS3に格納されているメッセージ本文)を受信することで、探している効果を得ることができれば驚くことはありません。次に、通常のクライアントライブラリを使用してメッセージを削除します。通常のクライアントライブラリはメッセージのS3コンポーネントを認識していないので、S3ファイルを削除すべきではありません。

+0

代替@Robありがとうございます。しかし、私はs3に格納されているメッセージを削除せずにWebインターフェイスからメッセージを削除することができただけで、プログラムでもこれを行う方法があると考えていました。 – Kia

+0

@Kia、私はあなたが考えるかもしれない別の道で私の答えを編集しました。 – Rob

+0

ありがとう@Rob!残念なことに、すでにそれを試していて、どちらのクライアントを使ってもsqからのメッセージだけを削除することはできませんでした。 – Kia

関連する問題