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
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
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'environnementALIBABA_CLOUD_ACCESS_KEY_IDetALIBABA_CLOUD_ACCESS_KEY_SECRET.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.Construction et envoi des messages : construisez un objet
Messageavec un topic, un tag et un corps. Attribuez une clé unique avecGuid.NewGuid()pour le suivi des messages. La méthodeproducer.send(msg)renvoie un objetSendResultONScontenant l'ID du message en cas de succès.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.