Tous les produits
Search
Centre de documentation

:Transfert de messages volumineux

Dernière mise à jour :Aug 10, 2026

Cette rubrique explique comment utiliser Simple Message Queue (anciennement MNS) pour transférer un message de plus de 64 Ko sans le fragmenter.

Contexte

La taille maximale d'un message dans une file d'attente Simple Message Queue (anciennement MNS) est de 64 Ko. Cette limite suffit généralement aux besoins des échanges de données lorsque la limitation du débit est appliquée. Dans ce cas, tout message dépassant 64 Ko doit être fragmenté.

MNS propose une solution permettant de transmettre un message de plus de 64 Ko sans fragmentation.

Solution

  1. Si un client producteur envoie un message de plus de 64 Ko vers Simple Message Queue (anciennement MNS), il téléverse le message sur Object Storage Service (OSS).

  2. Le client producteur envoie les informations relatives à l'objet OSS contenant le message vers Simple Message Queue (anciennement MNS).

  3. Le client consommateur lit le message depuis la file d'attente Simple Message Queue (anciennement MNS) et vérifie si le contenu du message correspond aux informations de l'objet OSS.

  4. Si le contenu du message correspond aux informations de l'objet OSS, le client consommateur télécharge l'objet OSS et transmet le contenu du message à l'application de niveau supérieur.

Le schéma suivant illustre le processus de transfert des messages.

Process

Exemple de code

MNS fournit un exemple de code Java pour le transfert de messages volumineux. Téléchargez l'exemple de code. La classe BigMessageSizeQueue encapsule toutes les fonctionnalités requises.

La classe BigMessageSizeQueue expose les méthodes publiques suivantes :

// Specify a constructor. cq is a common mnsqueue object. The ossClient and ossBucketName include the information of the OSS region and bucket that are used to transfer oversized messages.
public BigMessageSizeQueue(CloudQueue cq, OSSClient ossClient, String ossBucketName)
// Send a message.
public Message putMessage(Message message) 
// Receive the message.
public Message popMessage(int waitSeconds) 
// Delete the message.
public void deleteMessage(String receiptHandle) 
// Specify the maximum size of a message. If the size of a message exceeds the limit, the message is transferred by using OSS. Default value: 64 KB.
public void setBigMessageSize(long bigMessageSize) 
// Specify whether to delete the OSS object that contains the message. Default value: yes.
public void setNeedDeleteMessageObjectOnOSSFlag(boolean flag)           

Pour plus d'informations sur l'exemple de code, consultez le fichier Demo.java.

Précautions

  • Le transfert de messages volumineux consomme une grande quantité de bande passante réseau. Des goulots d'étranglement peuvent survenir au niveau des clients producteurs et consommateurs.

  • Le transfert de messages volumineux prend du temps et peut être affecté par les variations du réseau. Nous vous recommandons d'implémenter des mécanismes de nouvelle tentative au niveau supérieur en cas d'erreur.