Simple Message Queue(SMQ、旧称 MNS)は、メッセージをバッチで送受信するための API を提供します。 これにより、API が 1 秒あたりのクエリ数(QPS)を多く処理し、リクエスト数を減らすことができるため、コストが削減されます。
メッセージのバッチ送信
BatchSendMessage API は、一度に最大 16 件のメッセージを送信でき、合計サイズは 64 KB を超えることはできません。
デフォルトでは、メッセージは Base64 でエンコードされます。 Base64 でエンコードされたメッセージ本文は、元のメッセージ本文よりも大きくなります。 そのため、元のメッセージの合計サイズは 47 KB を超えることはできません。
または、次のコマンドを実行して元のメッセージ本文を送信することもできます。
message.setMessageBody("message_body", Message.MessageBodyType.RAW_STRING); // 元のメッセージ本文を送信する64 KB を超えるメッセージを送信するには、特大メッセージの送信を参照してください。
メッセージのバッチ受信
BatchReceiveMessage API は、一度に最大 16 件のメッセージを受信できます。 ただし、場合によっては、上限に達していなくても、受信メッセージの数が使用可能なメッセージの数よりも少なくなります。
10 件のメッセージ(m1、m2、m3、m4、m5、m6、m7、m8、m9、m10)が順番に送信されるとします。 BatchReceiveMessage API を初めて呼び出すと、5 つのメッセージ(m2、m4、m6、m8、m10)のみが受信されます。 次に、BatchReceiveMessage API を 2 回目に呼び出すと、残りの 5 つのメッセージ(m1、m3、m5、m7、m9)が受信されます。
これは、SMQ が複数のノードにデータを格納しますが、各バッチ操作はノード全体ではなく単一のノードからのみデータを受信するためです。 そのため、各バッチで受信されるメッセージはストレージノードによって決定され、順番通りではない場合があります。