Tous les produits
Search
Centre de documentation

Simple Message Queue (formerly MNS):ChangeMessageVisibility

Dernière mise à jour :Aug 10, 2026

Modifie le délai de visibilité d'un message consommé, en contrôlant la durée pendant laquelle il reste invisible pour les autres consommateurs avant de devenir à nouveau disponible pour une redistribution.

Fonctionnement

Lorsqu'un consommateur reçoit un message d'une file d'attente, ce message devient invisible pour les autres consommateurs pendant une durée appelée délai de visibilité. Durant cette période, le consommateur traite et supprime le message. Si le traitement prend plus de temps que prévu, appelez ChangeMessageVisibility pour prolonger le délai et empêcher un autre consommateur de recevoir le même message.

Le nouveau délai de visibilité commence au moment de l'appel ChangeMessageVisibility, et non pas lorsque le message a été reçu initialement.

Exemple : Une file d'attente possède un délai de visibilité de 60 secondes. Un consommateur reçoit un message et commence son traitement. Au bout de 15 secondes, le traitement est toujours en cours ; le consommateur appelle donc ChangeMessageVisibility avec VisibilityTimeout défini sur 30. Le message reste invisible pendant 30 secondes supplémentaires à partir de cet appel : il redevient visible 45 secondes après sa réception initiale (15 + 30), et non pas 90 secondes (60 + 30).

Autorisation

Par défaut, seuls les comptes Alibaba Cloud peuvent appeler cette opération. Les utilisateurs RAM doivent préalablement se voir attribuer les autorisations requises. Pour plus d'informations, consultez Politiques et exemples d'autorisation.

Élément Valeur
API ChangeMessageVisibility
Action mns:ChangeMessageVisibility
Resource acs:mns:$region:$accountid:/queues/$queueName/messages

Requête

Ligne de requête

PUT /queues/$queueName/messages?receiptHandle=<receiptHandle>&visibilityTimeout=<visibilitytimeout> HTTP/1.1

Paramètres URI

Paramètre Type Obligatoire Exemple Description
ReceiptHandle String Oui MbZj6wDWli+QEauMZc8ZRv37sIW2iJKq3M9Mx/KSbkJ0 Le descripteur de réception renvoyé lors de la dernière consommation du message. Pour plus d'informations, consultez ReceiveMessage.
VisibilityTimeout Integer Oui 50 Le nouveau délai de visibilité en secondes. Valeurs valides : 1 à 43200 (de 1 seconde à 12 heures).

En-têtes de requête

Aucun en-tête de requête spécifique à l'opération. Seuls les en-têtes de requête communs sont utilisés.

Corps de la requête

Aucun.

Réponse

Code d'état

HTTP/1.1 200 OK

En-têtes de réponse

Aucun en-tête de réponse spécifique à l'opération. Seuls les en-têtes de réponse communs sont renvoyés.

Corps de la réponse

Le corps de la réponse est au format XML :

Paramètre Type Exemple Description
ReceiptHandle String TbZj6wDWli+9CEauMZc8ZRv37sIW2iJKq3M9Mx/TS1 Un nouveau descripteur de réception, valide jusqu'à NextVisibleTime. Utilisez ce descripteur pour les opérations de suppression ou de modification ultérieures sur le message. Le descripteur de réception précédent n'est plus valide.
NextVisibleTime Long 1250700979298000 L'instant auquel le message redevient visible, sous forme d'horodatage UNIX en millisecondes depuis le 1er janvier 1970, 00:00:00 UTC.

Exemples

Exemple de requête

PUT /queues/$queueName/messages
?receiptHandle=MbZj6wDWli+QEauMZc8ZRv37sIW2iJKq3M9Mx/KSbkJ0&visibilityTimeout=50 HTTP/1.1
Host: $AccountId.mns.cn-hangzhou.aliyuncs.com
Date: Wed, 28 May 2012 22:32:00 GMT
x-mns-version: 2015-06-06
Authorization: MNS 15B4D3461F177624206A:xQE0diMbLRepdf3YB+FIEXA****

Exemple de réponse

HTTP/1.1 200 OK
x-mns-request-id:512B2A634403E52B1956****
x-mns-version: 2015-06-06
<?xml version="1.0" encoding="UTF-8"?>
<ChangeVisibility xmlns="http://mns.aliyuncs.com/doc/v1/">
    <ReceiptHandle>TbZj6wDWli+9CEauMZc8ZRv37sIW2iJKq3M9Mx/TS1</ReceiptHandle>
    <NextVisibleTime>1250700979298000</NextVisibleTime>
</ChangeVisibility>

Codes d'erreur

Code d'erreur Message d'erreur Code d'état HTTP Description
InvalidArgument The value of Element must be between Low and High seconds/bytes. 400 La valeur du paramètre est hors plage. Spécifiez une valeur dans la plage valide.
ReceiptHandleError The receipt handle you provided is not valid. 400 Le descripteur de réception est invalide. Obtenez un descripteur de réception valide en appelant ReceiveMessage.
QueueNotExist The queue name you provided does not exist. 404 La file d'attente spécifiée n'existe pas. Vérifiez le nom de la file d'attente ou créez-la au préalable.
MessageNotExist The receipt handle you provided has expired. 404 Le message est redevenu visible avant la fin du traitement et le descripteur de réception a expiré. Consommez les messages avant l'expiration du délai de visibilité, ou prolongez ce délai en appelant ChangeMessageVisibility plus tôt.

Opérations connexes

Les opérations suivantes sont couramment utilisées conjointement dans un flux de traitement de messages :

  1. ReceiveMessage — Recevez un message et obtenez son descripteur de réception.

  2. ChangeMessageVisibility — Prolongez le délai de visibilité si le traitement prend plus de temps que prévu.

  3. DeleteMessage — Supprimez le message une fois le traitement terminé.