Envoie jusqu'à 16 messages vers une file d'attente en une seule requête. La taille totale maximale des données utiles par lot est de 64 Ko.
Autorisation
Par défaut, seuls les comptes Alibaba Cloud peuvent appeler cette opération. Accordez les autorisations requises aux utilisateurs RAM avant qu'ils n'appellent cette opération. Pour plus d'informations, consultez la rubrique Politiques et exemples d'autorisation.
|**Propriété**
|
**Valeur**
| | --- | --- | |
API
|
BatchSendMessage
| |
Action
|
mns:BatchSendMessage
| |
Ressource
|
acs:mns:$region:$accountid:/queues/$queueName/messages
|
Notes d'utilisation
Chaque lot prend en charge jusqu'à 16 messages, pour une taille combinée maximale de 64 Ko.
Encodez tous les corps de message en Base64 avant l'envoi afin d'éviter les erreurs liées aux caractères spéciaux dans la charge utile XML.
Si
DelaySecondsest omis ou défini sur0, les messages sont immédiatement disponibles pour la consommation. Pour différer la consommation, définissezDelaySecondssur une valeur supérieure à 0. Les messages différés passent à l'état Delayed (Différé), puis à l'état Active (Actif) après la période spécifiée.Lorsque le message et la file d'attente définissent tous deux
DelaySeconds, la valeur au niveau du message est prioritaire.Calcul des QPS : Le nombre effectif de QPS pour une file d'attente correspond au taux de requêtes multiplié par le nombre de messages par lot. Par exemple, 100 requêtes par seconde avec 10 messages par lot génèrent 1 000 QPS sur cette file d'attente.
Requête
Ligne de requête
POST /queues/$queueName/messages HTTP/1.1
En-têtes
Cette opération ne définit pas d'en-têtes de requête spécifiques. Pour les en-têtes communs, consultez l'exemple de requête.
Corps de la requête
Le corps de la requête utilise le format XML. Encapsulez chaque message dans un élément <Message> à l'intérieur d'un élément racine <Messages>.
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| MessageBody | String | Oui | Corps du message. Encodez cette valeur en Base64 avant l'envoi. |
| DelaySeconds | Integer | Non | Délai en secondes avant que le message ne devienne consommable. Valeurs valides : de 0 à 604800. Valeur par défaut : 0. |
Réponse
Succès
HTTP/1.1 201 Created
La réponse contient un élément <Message> pour chaque message du lot :
| Paramètre | Type | Description |
|---|---|---|
| MessageId | String | ID unique du message au sein de la file d'attente. |
| MessageBodyMD5 | String | Hachage MD5 du corps du message. Comparez cette valeur avec un hachage calculé localement pour vérifier l'intégrité du message. |
Échec partiel
Lorsque certains messages d'un lot échouent, la réponse renvoie le code d'état HTTP 500. Le corps de la réponse contient un mélange d'entrées réussies et d'entrées ayant échoué :
Les messages réussis incluent
MessageIdetMessageBodyMD5.Les messages ayant échoué incluent plutôt
ErrorCodeetErrorMessage.
Exemples
Envoyer deux messages avec des valeurs de délai différentes
Requête :
POST /queues/$queueName/messages HTTP/1.1
Host: $AccountId.mns.cn-hangzhou.aliyuncs.com
Date: Wed, 18 Mar 2012 12:00:00 GMT
Content-Length:500
Content-Type:text/xml;charset=utf-8
x-mns-version: 2015-06-06
Authorization: MNS 15B4D3461F177624206A:xQE0diMbLRepdf3YB+FIEXA****
<?xml version="1.0" encoding="UTF-8"?>
<Messages xmlns="http://mns.aliyuncs.com/doc/v1/">
<Message>
<MessageBody>This is test message 1.</MessageBody>
<DelaySeconds>60</DelaySeconds>
<Priority>1</Priority>
</Message>
<Message>
<MessageBody>This is test message 2.</MessageBody>
<DelaySeconds>0</DelaySeconds>
<Priority>1</Priority>
</Message>
</Messages>
Réponse : tous les messages envoyés
HTTP/1.1 201 Created
Content-Length:120
Content-Type:text/xml;charset=utf-8
x-mns-request-id:512B2A634403E52B1956****
x-mns-version: 2015-06-06
<?xml version="1.0" encoding="UTF-8"?>
<Messages xmlns="http://mns.aliyuncs.com/doc/v1/">
<Message>
<MessageId>5F290C926D472878-2-14D9529A8FA-20000****</MessageId>
<MessageBodyMD5>C5DD56A39F5F7BB8B3337C6D11B6****</MessageBodyMD5>
</Message>
<Message>
<MessageId>5F290C926D472878-2-14D9529A8FA-20000****</MessageId>
<MessageBodyMD5>377AC5283D8765C9CEE4E0EA353D****</MessageBodyMD5>
</Message>
</Messages>
Réponse : échec partiel
Lorsqu'un ou plusieurs messages échouent, la réponse renvoie le code HTTP 500. Chaque élément <Message> contient soit un résultat réussi, soit une erreur :
HTTP/1.1 500
Content-Length:120
Content-Type:text/xml;charset=utf-8
x-mns-request-id:512B2A634403E52B1956****
x-mns-version: 2015-06-06
<?xml version="1.0" encoding="UTF-8"?>
<Messages xmlns="http://mns.aliyuncs.com/doc/v1/">
<Message>
<MessageId>5F290C926D472878-2-14D9529A8FA-20000****</MessageId>
<MessageBodyMD5>C5DD56A39F5F7BB8B3337C6D11B6****</MessageBodyMD5>
</Message>
<Message>
<MessageId>5F290C926D472878-2-14D9529A8FA-20000****</MessageId>
<MessageBodyMD5>377AC5283D8765C9CEE4E0EA353D****</MessageBodyMD5>
</Message>
<Message>
<ErrorCode>InternalError</ErrorCode>
<ErrorMessage>Internal error.</ErrorMessage>
</Message>
</Messages>
Codes d'erreur
| Code d'erreur | Message d'erreur | Statut HTTP | Description |
|---|---|---|---|
| QueueNotExist | The queue name you provided is not exist. | 404 | La file d'attente spécifiée n'existe pas. Créez la file d'attente avant d'envoyer des messages. |
| MalformedXML | The XML you provided was not well-formed. | 400 | Le corps de la requête contient un XML non valide. Vérifiez la structure et l'encodage XML. |
| InvalidArgument | The value of Element should between Low and High seconds/bytes. | 400 | La valeur d'un paramètre est hors plage. Spécifiez une valeur valide comme indiqué. |