Compilez et exécutez un projet de test avec le SDK client TCP pour Java. Le projet de démonstration inclut des exemples fonctionnels pour cinq types de messages — normaux, ordonnés, transactionnels, planifiés et différés — pour Java, Spring et Spring Boot.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
IntelliJ IDEA Ultimate Edition ou Eclipse installé (les exemples ci-dessous utilisent IntelliJ IDEA)
JDK installé
Le projet de démonstration téléchargé et décompressé sur votre machine locale (le dossier extrait est nommé
rocketmq-demo-master)Une instance ApsaraMQ for RocketMQ avec les ressources suivantes créées dans la console ApsaraMQ for RocketMQ : instance, topic, groupe de consommateurs, AccessKey ID et AccessKey secret. Pour obtenir des instructions, consultez Créer des ressources
Configurer le projet de démonstration
Étape 1 : Importer le projet
Importez les fichiers du projet de démonstration dans IntelliJ IDEA.
Étape 2 : Mettre à jour la version du SDK
Dans pom.xml, mettez à jour la dépendance du SDK client TCP pour Java vers la dernière version. Pour connaître les versions disponibles, consultez les Notes de version.
<dependency>
<groupId>com.aliyun.openservices</groupId>
<artifactId>ons-client</artifactId>
<!--Replace with the latest version from the release notes-->
<version>1.8.8.5.Final</version>
</dependency>
Étape 3 : Configurer la classe MqConfig
Définissez les champs suivants dans la classe MqConfig afin qu'ils correspondent aux ressources que vous avez créées :
public static final String TOPIC = "<your-topic>";
public static final String GROUP_ID = "<your-group-id>";
public static final String ORDER_TOPIC = "<your-order-topic>";
public static final String ORDER_GROUP_ID = "<your-order-group-id>";
public static final String ACCESS_KEY = "<your-access-key>";
public static final String SECRET_KEY = "<your-secret-key>";
public static final String TAG = "<your-message-tag>";
public static final String NAMESRV_ADDR = "<your-tcp-endpoint>";
Remplacez les espaces réservés par vos valeurs réelles :
| Espace réservé | Description | Où le trouver |
|---|---|---|
<your-topic> |
Topic pour les messages normaux et transactionnels | ApsaraMQ for RocketMQ console > votre instance > Topics |
<your-group-id> |
ID du groupe de consommateurs | ApsaraMQ for RocketMQ console > votre instance > Groups |
<your-order-topic> |
Topic pour les messages ordonnés | Identique à ci-dessus (créez un topic distinct pour les messages ordonnés) |
<your-order-group-id> |
Groupe de consommateurs pour les messages ordonnés | Identique à ci-dessus |
<your-access-key> |
AccessKey ID de votre compte Alibaba Cloud | Consultez Créer une paire de clés AccessKey |
<your-secret-key> |
AccessKey secret de votre compte Alibaba Cloud | Identique à ci-dessus |
<your-message-tag> |
Tag de message personnalisé pour le filtrage | Toute valeur de chaîne |
<your-tcp-endpoint> |
Endpoint TCP de votre instance | ApsaraMQ for RocketMQ console > votre instance > page Instance Details > section TCP Endpoint |
Vous pouvez également utiliser la paire de clés AccessKey d'un utilisateur RAM disposant des autorisations sur le topic. Pour plus de détails sur les paramètres de configuration disponibles, consultez Méthodes et paramètres .
Étape 4 : Configurer common.xml (uniquement pour Spring et Spring Boot)
Si vous prévoyez d'utiliser les exemples Spring ou Spring Boot, mettez à jour le fichier common.xml avec les informations relatives à vos ressources :
<props>
<prop key="AccessKey">XXX</prop> <!--Replace with your AccessKey ID-->
<prop key="SecretKey">XXX</prop> <!--Replace with your AccessKey secret-->
<prop key="GROUP_ID">XXX</prop> <!--Replace with your consumer group ID-->
<prop key="Topic">XXX</prop> <!--Replace with your topic-->
<prop key="NAMESRV_ADDR">XXX</prop> <!--Replace with your TCP endpoint-->
</props>
Envoyer et recevoir des messages
Le projet de démonstration exécute les producteurs et les consommateurs dans un seul thread. Pour les systèmes de production, exécutez les producteurs et les consommateurs sur des threads ou des hôtes distincts. Pour des exemples multithread, consultez Envoyer des messages en utilisant plusieurs threads.
Exécutez chaque exemple en appelant la méthode main de la classe correspondante.
Envoyer des messages
Exécutez la classe producteur qui correspond à votre type de message et à votre framework :
| **Type de message** | **Java** | **Spring** | **Spring Boot** |
|---|---|---|---|
| Normal | SimpleMQProducer |
ProducerClient |
ProducerClient |
| Transactionnel | SimpleTransactionProducer |
TransactionProducerClient |
TransactionProducerClient |
| Ordonné (FIFO) | SimpleOrderProducer |
OrderProducerClient |
OrderProducerClient |
| Planifié et différé | MQTimerProducer |
Non pris en charge | Non pris en charge |
Détails par type de message :
Messages transactionnels : La classe
LocalTransactionCheckerImplgère les vérifications de statut des transactions locales. Pour le workflow complet, consultez Envoyer et recevoir des messages transactionnels.Messages ordonnés : Les messages sont envoyés et consommés selon l'ordre premier entré, premier sorti (FIFO). Pour plus de détails, consultez Envoyer et s'abonner à des messages ordonnés.
Messages planifiés et différés : La classe
MQTimerProducerdistribue les messages avec un délai par défaut de 3 secondes. Le délai maximal configurable est de 40 jours. Pour plus de détails, consultez Envoyer et recevoir des messages planifiés.
Vérifier l'envoi des messages
Après avoir envoyé des messages, accédez à la console ApsaraMQ for RocketMQ et interrogez les messages par topic. Les messages envoyés doivent apparaître dans les résultats.
Recevoir des messages
Exécutez la classe consommateur qui correspond à votre type de message et à votre framework :
| **Type de message** | **Java** | **Spring** | **Spring Boot** |
|---|---|---|---|
| Normal | SimpleMQConsumer |
ConsumerClient |
ConsumerClient |
| Transactionnel | SimpleMQConsumer |
ConsumerClient |
ConsumerClient |
| Ordonné (FIFO) | SimpleOrderConsumer |
OrderConsumerClient |
OrderConsumerClient |
| Planifié et différé | SimpleMQConsumer |
Non pris en charge | Non pris en charge |
L'initialisation de la classe prend quelques secondes au démarrage. Ce comportement est normal et ne se produit qu'une seule fois : en production, les classes ne sont initialisées qu'au démarrage de l'application.
Vérifier la réception des messages
Une entrée de journal confirme que le consommateur a reçu le message. Pour approfondir la vérification, consultez le statut des consommateurs dans la console ApsaraMQ for RocketMQ. Les consommateurs démarrés doivent apparaître comme étant en ligne et abonnés au topic.