Tous les produits
Search
Centre de documentation

ApsaraMQ for RocketMQ:Send and receive normal messages

Dernière mise à jour :Aug 09, 2026

Les messages standard constituent le type de message de base dans ApsaraMQ for RocketMQ. Contrairement aux messages planifiés, différés, ordonnés et transactionnels, les messages standard n'impliquent aucune sémantique particulière en matière de livraison ou d'ordre. Utilisez les messages standard pour une communication asynchrone fiable qui ne nécessite ni contraintes de temporisation ni respect d'une séquence spécifique.

Les exemples présentés sur cette page utilisent le SDK client TCP pour .NET.

Prérequis

Avant de commencer, assurez-vous d'avoir :

  • Installé le SDK pour .NET. Pour plus d'informations, consultez les Notes de version

  • Préparé un environnement de développement. Pour plus d'informations, consultez la rubrique Préparation de l'environnement

  • Créé les ressources ApsaraMQ for RocketMQ (instances, topics et groupes de consommateurs) dans la console. Pour plus d'informations, consultez la rubrique Création de ressources

  • Obtenu une paire AccessKey pour votre compte Alibaba Cloud. Pour plus d'informations, consultez la rubrique Création d'une paire AccessKey

Envoi de messages standard

Remarque

Pour consulter l'exemple de projet complet, rendez-vous sur le dépôt de code ApsaraMQ for RocketMQ.

L'exemple suivant illustre l'envoi de messages standard à l'aide du SDK client TCP pour .NET. Remplacez les espaces réservés par vos valeurs réelles.

using System;
using ons;

public class ProducerExampleForEx
{
    public ProducerExampleForEx()
    {
    }

    static void Main(string[] args) {
        // Configure the producer properties.
        ONSFactoryProperty factoryInfo = new ONSFactoryProperty();

        // Load credentials from environment variables.
        // Set ALIBABA_CLOUD_ACCESS_KEY_ID and ALIBABA_CLOUD_ACCESS_KEY_SECRET
        // before running this example.
        factoryInfo.setFactoryProperty(ONSFactoryProperty::AccessKey, getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"));
        factoryInfo.setFactoryProperty(ONSFactoryProperty::SecretKey, getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));

        // Specify the Group ID created in the ApsaraMQ for RocketMQ console.
        factoryInfo.setFactoryProperty(ONSFactoryProperty.ProducerId, "<GROUP_ID>");

        // Specify the topic created in the ApsaraMQ for RocketMQ console.
        factoryInfo.setFactoryProperty(ONSFactoryProperty.PublishTopics, "<TOPIC>");

        // Specify the TCP endpoint from the Instance Details page
        // in the ApsaraMQ for RocketMQ console.
        factoryInfo.setFactoryProperty(ONSFactoryProperty.NAMESRV_ADDR, "<TCP_ENDPOINT>");

        // Specify the log file path.
        factoryInfo.setFactoryProperty(ONSFactoryProperty.LogPath, "C://log");

        // Create a producer instance.
        // Producer instances are thread-safe. A single instance can send
        // messages to multiple topics. In most cases, one instance per thread is sufficient.
        Producer producer = ONSFactory.getInstance().createProducer(factoryInfo);

        // Start the producer.
        producer.start();

        // Build a message with a topic, tag, and body.
        Message msg = new Message(factoryInfo.getPublishTopics(), "tagA", "Example message body");
        msg.setKey(Guid.NewGuid().ToString());

        // Send 32 messages in a loop.
        for (int i = 0; i < 32; i++) {
            try
            {
                SendResultONS sendResult = producer.send(msg);
                Console.WriteLine("send success {0}", sendResult.getMessageId());
            }
            catch (Exception ex)
            {
                Console.WriteLine("send failure{0}", ex.ToString());
            }
        }

        // Shut down the producer before exiting the thread.
        producer.shutdown();
    }
}

Remplacez les espaces réservés suivants par vos valeurs réelles :

Espace réservé Description Exemple
<GROUP_ID> L'ID de groupe que vous avez créé dans la console ApsaraMQ for RocketMQ GID_example
<TOPIC> Le topic que vous avez créé dans la console ApsaraMQ for RocketMQ T_example_topic_name
<TCP_ENDPOINT> Le point de terminaison TCP disponible dans la section TCP Endpoint de la page Instance Details --

Analyse du code

  1. Configuration des propriétés : définissez les identifiants, l'ID de groupe, le topic, le point de terminaison TCP et le chemin du journal via ONSFactoryProperty. Chargez l'ID AccessKey et la clé secrète AccessKey depuis les variables d'environnement ALIBABA_CLOUD_ACCESS_KEY_ID et ALIBABA_CLOUD_ACCESS_KEY_SECRET.

  2. Création et démarrage du producteur : la méthode ONSFactory.getInstance().createProducer(factoryInfo) renvoie une instance de producteur thread-safe. Dans la plupart des cas, une seule instance par thread suffit, même lors de l'envoi vers plusieurs topics.

  3. Construction et envoi des messages : construisez un objet Message avec un topic, un tag et un corps. Attribuez une clé unique avec Guid.NewGuid() pour le suivi des messages. La méthode producer.send(msg) renvoie un objet SendResultONS contenant l'ID du message en cas de succès.

  4. Arrêt : appelez producer.shutdown() avant la sortie du thread pour arrêter l'instance du producteur.

Abonnement aux messages standard

Pour obtenir des instructions et un exemple de code sur l'abonnement aux messages standard avec le SDK client TCP pour .NET, consultez la rubrique Abonnement aux messages.

Étapes suivantes

  • Abonnement aux messages : configurez un consommateur pour recevoir des messages à l'aide du SDK client TCP pour .NET

  • Explorez les autres types de messages dans le Guide du développeur : les messages planifiés, différés, ordonnés et transactionnels prennent chacun en charge différentes sémantiques de livraison.