0

私が達成しようとしているのは、メッセージキューを通じた画像のアップロードを処理する最もシンプルなシステムを構築することです。メッセージキューを介して画像(または大きなファイル)を送信する

現在、私たちは一時ファイルを扱っています.Aws S3で送信する必要がある画像ごとに1つ作成し、必要に応じて最適化/カスタマイズします。すべてが完了したら、それをS3にプッシュします。

現在のところ、これはうまくいきますが、画像のBase64エンコーディングを使用してファイルシステムのオーバーヘッドを取り除き、アプリケーションが動作しているシステムから完全に切り離されるようにします。

我々はアマゾンSQS(私たちは現在、生産にBeanstalkdを使用)を使用しようとしているので、ペイロードの256KB以上がキューを介してプッシュするために、彼らのサービスは許可していない、とイメージはかなり重いので、これは問題です。

まだ解決策はありますか?

+0

中間ファイルをS3に送信し、SQSメッセージの一時ロケーションURLを参照してください。 –

+0

それはPHPのSDKだけがサポートしていればいいと思います... AWSが拡張されたクライアントを開発したのを見たことがありますが、Javaの場合のみです。 Grrr。 – GiamPy

+0

SDKは自動的にSQSでSDKをサポートしていませんが、あなた自身がS3にファイルを保存してURIをSQSメッセージに含めることができないという明白な理由はありません。 –

答えて

1

適切なメッセージサイズ、この場合は256Kbにファイルを分割し、適切なシーケンス番号でメッセージにタグを付けてキューに入れることができます。もう一方の端では、メッセージを受信して​​順番にメッセージを再アセンブルし、ファイルに書き込むか、イメージデータをソリューションの次の段階にプッシュします。

+0

SQSはバイナリデータではなく、有効なUTF-8をペイロードとしてのみ受け入れるため、コンテンツを転送するためにはbase64でエンコードする必要があります。潜在的なアウト・オブ・デリバリーにより、これは少し脆弱になります。 –

+0

よろしいですか?ありがとう。しかし、配信の順序を確実にするための方法/設定オプションはありませんか? – Shashi

+1

いいえ.AWS SQSは、ジョブを受け取ったときに、ジョブを送信した順序が同じであることを保証しません。あなたはアプリケーションレベルでそれを処理する必要があります。 – GiamPy

関連する問題