すべてのプロダクト
Search
ドキュメントセンター

:Message Service でのメッセージの一括操作に関する注意事項

最終更新日:Mar 22, 2020

Message Service はメッセージを一括で送受信するインターフェイスを提供し、QPS を向上させるだけでなく、リクエストの数とコストを削減します。

バッチ操作時の考慮事項:

  • BatchPutMessage インターフェイスを使用すると、一度に最大 16 件のメッセージを送信することができます。送信メッセージの合計サイズは 64 KB までです。

    他の指定がない限り、送信メッセージは Base64 でエンコードされます (元のメッセージ本文が増幅されます)。したがって、送信メッセージの実際のサイズは 47 KB を超えることはできません。

    次のコマンドを実行すると Base64 エンコーディングをキャンセルし、元のメッセージ本文を使用することができます。

    message.setMessageBody(“message_body”, Message.MessageBodyType.RAW_STRING);

  • BatchReceiveMessage インターフェイスを使用すると、一度に最大 16 件のメッセージを受信することができます。

    10 件のメッセージがある場合に、BatchReceiveMessage で 5 件のメッセージしか受信できないのはなぜでしょうか。

    テストを実行してみましょう。キューに含まれる 10 件のメッセージは順番に送信されます (m1、m2、m3、m4、m5、m6、m7、m8、m9、m10)。BatchReceiveMessage の最初の呼び出しで 5 件のメッセージ (m2、m4、m6、m8、m10) が取得され、2 回目の呼び出しで残りの 5 件 (m1、m3、m5、m7、m9) が取得されます。

    Message Service は複数の スライス にデータを格納し、1 回のバッチ取得操作ごとに 1 つの スライス からデータを取得します。必要なデータを取得した後、Message Service はすべての スライス からデータを取得するまで待機せず、すぐにメッセージを返します。データの送信時には、スライス がどのように分散しているかに応じて、各回のバッチ取得操作で返されるメッセージが決まります。

    これが、Message Service でメッセージの取得順が一定でない理由の 1 つです。

    問題が解決しない場合は、テクニカルサポートにお問い合わせください。