Simple Message Queue (SMQ, formerly MNS) propose des API pour envoyer et recevoir des messages par lots. Cette approche réduit les coûts, car les API traitent plus de requêtes par seconde (QPS) avec moins d'appels.
Envoi de messages par lot
L'API BatchSendMessage permet d'envoyer jusqu'à 16 messages à la fois, pour une taille totale maximale de 64 Ko.
Par défaut, les messages sont encodés en Base64. Le corps d'un message encodé en Base64 est plus volumineux que le corps du message original. Par conséquent, la taille totale des messages originaux ne doit pas dépasser 47 Ko.
-
Pour envoyer le corps du message original, exécutez la commande suivante :
message.setMessageBody("message_body", Message.MessageBodyType.RAW_STRING); Pour envoyer un message de plus de 64 Ko, consultez la rubrique Transmission de messages de grande taille.
Réception de messages par lot
L'API BatchReceiveMessage permet de recevoir jusqu'à 16 messages à la fois. Toutefois, il arrive que le nombre de messages reçus soit inférieur au nombre de messages disponibles, même si la limite maximale n'est pas atteinte.
Supposons l'envoi séquentiel de 10 messages (m1, m2, m3, m4, m5, m6, m7, m8, m9 et m10). Lors du premier appel à l'API BatchReceiveMessage, vous ne recevez que cinq messages (m2, m4, m6, m8 et m10). Lors du deuxième appel, vous recevez les cinq autres messages (m1, m3, m5, m7 et m9).
SMQ stocke les données sur plusieurs nœuds, mais chaque opération par lot récupère les données d'un seul nœud. Par conséquent, les messages reçus dans chaque lot dépendent du nœud de stockage et peuvent ne pas être ordonnés.