Tous les produits
Search
Centre de documentation

:Gérer les files d'attente

Dernière mise à jour :Aug 10, 2026

Cette rubrique explique comment utiliser le SDK pour PHP afin de créer une file d'attente, d'envoyer un message, de recevoir et de supprimer ce message, puis de supprimer la file d'attente.

Étape 1 : Préparer l'environnement

  1. Téléchargez le fichier CreateQueueAndSendMessage.php.

  2. Ouvrez le fichier CreateQueueAndSendMessage.php et spécifiez l'ID AccessKey, le secret AccessKey et l'endpoint à la fin du fichier.

    • ID AccessKey et secret AccessKey

      • Paire de clés AccessKey utilisée pour appeler les opérations API sur Alibaba Cloud.

      • Si vous utilisez un compte Alibaba Cloud, accédez à la page AccessKey Management de la console de gestion Alibaba Cloud pour créer et consulter votre paire de clés AccessKey.

      • Si vous êtes un utilisateur Resource Access Management (RAM), connectez-vous à la console RAM pour consulter votre paire de clés AccessKey.

    • Endpoint

      • Endpoint utilisé pour accéder au service Message Service (Simple Message Queue (anciennement MNS)). Pour afficher les endpoints de MNS, connectez-vous à la console MNS. Pour plus d'informations, consultez Obtenir des endpoints.

      • Les endpoints de MNS varient selon les régions.

  3. Utilisez le code suivant inclus dans le fichier CreateQueueAndSendMessage.php pour configurer le SDK :

    // Include an SDK autoload file. 
    require __DIR__ . '/vendor/autoload.php';
    
    // Declare required PHP classes. 
    use AliyunMNS\Client;
    use AliyunMNS\Requests\SendMessageRequest;
    use AliyunMNS\Requests\CreateQueueRequest;
    use AliyunMNS\Exception\MnsException;

Étape 2 : Créer une file d'attente

Si aucune file d'attente n'est disponible, créez-en une. Le nom par défaut de la nouvelle file d'attente est CreateQueueAndSendMessageExample. Vous pouvez également spécifier un autre nom de file d'attente.

// 1.Initialize a client. 
$this->client = new Client($this->endPoint, $this->accessId, $this->accessKey);

// 2.Generate a request to create a queue. You can specify the parameters of the queue. 
// For more information about the parameters of the queue, see Queue. 
$request = new CreateQueueRequest($queueName);
try
{
        $res = $this->client->createQueue($request);
        // 3.The queue is created. 
        echo "QueueCreated! \n";
}
catch (MnsException $e)
{
        // 4.The queue may fail to be created if a network error occurs or the queue name already exists. You can call the CatchException operation to identify and resolve the failure. 
         echo "CreateQueueFailed: " . $e;
         return;
}            

Étape 3 : Envoyer un message

Une fois la file d'attente créée, envoyez-y un message.

// 1.Retrieve the queue. 
// By default, the SDK for PHP performs Base64 encoding for sent messages and performs Base64 decoding for received messages. 
// If you do not want the SDK to perform the preceding operations, you can set the Base64 parameter to FALSE when you call the getQueueRef() method: $queue = $this->client->getQueueRef($queueName, FALSE).
$queue = $this->client->getQueueRef($queueName);

$messageBody = "test";
// 2.Generate a request to send a message. 
// You can specify the DelaySeconds and Priority parameters of the message. 
// For more information about the parameters of the message, see QueueMessage. 
$bodyMD5 = md5(base64_encode($messageBody));
$request = new SendMessageRequest($messageBody);
try
{
        $res = $queue->sendMessage($request)
        // 3.The message is sent. 
        echo "MessageSent! \n";
}
catch (MnsException $e)
{
        // 4.The message may fail to be sent if a network error occurs or the message is oversized. You can query the cause and solve the problem. 
        echo "SendMessage Failed: " . $e;
        return;
}            

Étape 4 : Recevoir et supprimer le message

Si le message a été envoyé, recevez-le depuis la file d'attente.

NextVisibleTime est un paramètre important du message dans Simple Message Queue (anciennement MNS). Pour plus d'informations, consultez QueueMessage.

$receiptHandle = NULL;
try
{
        // 1.Call the receiveMessage() function. 
        // We recommend that you set the WaitSeconds parameter to 30 when you call the receiveMessage() function. 
        // If you set the WaitSeconds parameter to a non-zero value, the request of receiving messages is an HTTP long polling request. A response is returned only if the message is sent to the queue or the request times out. The maximum value of the WaitSeconds parameter is 30. 
        $res = $queue->receiveMessage(30);
        echo "ReceiveMessage Succeed! \n";
        if (strtoupper($bodyMD5) == $res->getMessageBodyMD5())
        {
             echo "You got the message sent by yourself! \n";
        }
        // 2.Retrieve the value of the ReceiptHandle parameter. The receipt handle of the message has a validity period and can be used to modify or delete the message. For more information, see QueueMessage. 
        $receiptHandle = $res->getReceiptHandle();
}
catch (MnsException $e)
{
        // 3.The message may fail to be received if an error occurs. You can query the cause and solve the problem. 
        echo "ReceiveMessage Failed: " . $e;
        return;
}

// Specify your own logic to process messages based on your business requirements. 
// The VisibilityTimeout parameter specifies the period when a message remains inactive in the queue after being consumed by a client. After the specified period, the message becomes active again and can be consumed by other clients. The message is not lost if the program fails or is stuck. 

// 4.After the message is consumed, you can delete the message from the queue. 
try
{
        // 5.Call the deleteMessage() function. 
        $res = $queue->deleteMessage($receiptHandle);
        echo "DeleteMessage Succeed! \n";
}
catch (MnsException $e)
{
        // 6.If an error occurs, you can call the CatchException operation to identify and resolve the failure. 
        // If the receipt handle expires, the MessageNotExist error is returned. This error indicates that you cannot use the receipt handle to find the corresponding message. 
        // To ensure that you can consume the message before the receipt handle expires, you must set the VisibilityTimeout parameter to an appropriate value. You can call the changeMessageVisibility() function to modify the value of the VisibilityTimeout parameter. 
        echo "DeleteMessage Failed: " . $e;
        return;
}            

Étape 5 : Supprimer la file d'attente

Utilisez l'exemple de code suivant pour supprimer la file d'attente :

try {
        $this->client->deleteQueue($queueName);
        echo "DeleteQueue Succeed! \n";
} catch (MnsException $e) {
        echo "DeleteQueue Failed: " . $e;
        return;
}