ApsaraMQ for RocketMQ propose des SDK pour les protocoles TCP et HTTP dans plusieurs langages de programmation. Choisissez un SDK en fonction de la version de votre instance, des fonctionnalités requises et du protocole souhaité.
Choisir une version de SDK
Le SDK gRPC 5.x est le point de départ recommandé. Il prend en charge toutes les nouvelles fonctionnalités et bénéficie d'optimisations continues. Si le SDK gRPC ne couvre pas une fonctionnalité spécifique, utilisez le SDK Remoting 5.x en alternative.
Le tableau suivant compare toutes les versions de SDK disponibles. ✅ = pris en charge, ❌ = non pris en charge.
| **Fonctionnalité** | **RocketMQ 5.x gRPC SDK** | **RocketMQ 5.x Remoting SDK** | **RocketMQ 4.x/3.x SDK** | **RocketMQ ONS TCP 1.x SDK** | **RocketMQ ONS TCP 2.x SDK** | **RocketMQ ONS HTTP SDK** |
|---|---|---|---|---|---|---|
| Protocole | Protocole gRPC v2 | Protocole Remoting | Protocole Remoting | Protocole Remoting | Protocole gRPC v1 | Protocole HTTP |
| Instances compatibles | Instances de série 5.x | Instances de séries 5.x et 4.x | Instances de séries 5.x et 4.x | Instances de séries 5.x et 4.x | Instances de série 4.x | Instances de série 4.x |
| Cas d'utilisation | Recommandé. Prend en charge plusieurs langages. Toutes les nouvelles fonctionnalités et optimisations ciblent ce SDK. | Utilisez le SDK Remoting si le SDK gRPC 5.x ne répond pas à des exigences spécifiques. | À utiliser uniquement si vos services s'exécutent déjà sur ces clients. Les instances 5.x assurent la rétrocompatibilité. | À utiliser uniquement si vos services s'exécutent déjà sur ces clients. Les instances 5.x assurent la rétrocompatibilité. | SDK hérité. Aucune nouvelle fonctionnalité. Accès uniquement aux instances 4.x. | SDK hérité. Aucune nouvelle fonctionnalité. Accès uniquement aux instances 4.x. |
| Messages normaux, ordonnés, transactionnels et planifiés | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Consommation concurrente | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Consommation ordonnée | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Optimisation de la concurrence de consommation pour la consommation ordonnée | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Consommation en mode diffusion (broadcasting) | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
| Consommation en flux (connexion à des services tels que Flink) | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
| Traçabilité des messages | ✅ | ✅ | Pris en charge dans les versions 4.5.2 et ultérieures | ✅ | ✅ | ❌ |
| Métriques client Producteur et consommateur | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Arrêt gracieux | ✅ | Pris en charge uniquement pour les instances de série 5.x | ❌ | ❌ | ❌ | ❌ |
Limitations
Tous les consommateurs d'un même groupe de consommateurs doivent utiliser des clients prenant en charge le même protocole.
-
Lors d'une mise à niveau progressive d'un SDK utilisant le protocole Remoting vers un SDK utilisant le protocole gRPC au sein du même groupe de consommateurs :
Les groupes de consommateurs délivrant des messages ordonnés ne prennent pas en charge cette mise à niveau.
Les groupes de consommateurs délivrant des messages de manière concurrente permettent une mise à niveau fluide. Un petit nombre de messages peut être dupliqué pendant l'opération.
Le décalage du consommateur (consumer offset) pour les messages ordonnés peut faire l'objet d'un retour arrière si un groupe de consommateurs suit cette séquence : démarrage avec un SDK utilisant le protocole Remoting, mise à niveau vers un SDK utilisant le protocole gRPC, puis retour au SDK utilisant le protocole Remoting.
Le SDK RocketMQ ONS TCP 2.x est disponible uniquement dans certaines régions. Pour plus d'informations, consultez les Limites.
SDK pour le protocole TCP
Utilisez le SDK Community Edition uniquement lors de la migration de RocketMQ open source vers le cloud sans modification du code. Dans tous les autres cas, utilisez le SDK Enterprise Edition fourni par ApsaraMQ for RocketMQ. Le SDK Enterprise Edition offre davantage de fonctionnalités et une stabilité supérieure.
SDK Enterprise Edition pour le protocole TCP (ONS 1.x/2.x)
Java
C/C++
.NET
SDK pour le protocole HTTP
Les SDK pour le protocole HTTP (Enterprise Edition) sont recommandés pour la prise en charge multilingue, couvrant des langages de programmation supplémentaires non disponibles via le protocole TCP.
SDK Enterprise Edition pour le protocole HTTP
Java
PHP
Go
Python
Node.js
C#
C++
Comparaison des fonctionnalités : TCP vs HTTP
Le protocole TCP est recommandé. Il offre des performances de transport élevées, prend en charge davantage de fonctionnalités de messagerie et fournit une observabilité enrichie, notamment la gestion de l'accumulation des messages et la réinitialisation des décalages des consommateurs. Utilisez le protocole HTTP lorsque le protocole TCP ne prend pas en charge votre langage de programmation ou lorsqu'un accès léger suffit.
| **Fonctionnalité** | **TCP** | **HTTP** |
|---|---|---|
| Messages normaux | ✅ | ✅ |
| Messages ordonnés | ✅ | ✅ |
| Messages planifiés et différés | ✅ | ✅ |
| Messages transactionnels | ✅ | ✅ |
| PushConsumer | ✅ | ❌ |
| PullConsumer | ✅ | ❌ |
| Consommation par lots | ✅ | ❌ |
| Consommation en mode diffusion (broadcasting) | ✅ | ❌ |
| Consommation en cluster | ✅ | ✅ |
| Nouvelle tentative de message | ✅ | ✅ |
| Interroger les traces de messages | ✅ | ✅ |
| Files d'attente de messages morts | ✅ | ✅ |
| Réinitialiser les décalages des consommateurs | ✅ | ❌ |
Notes d'utilisation
Faites correspondre le type d'endpoint au protocole du SDK. Un SDK TCP nécessite l'endpoint TCP de l'instance ApsaraMQ for RocketMQ ; un SDK HTTP nécessite l'endpoint HTTP.
Les ID de groupe sont spécifiques au protocole et ne peuvent pas être partagés entre différents protocoles. Créez un ID de groupe TCP pour les SDK TCP et un ID de groupe HTTP pour les SDK HTTP.
-
Les clients TCP et HTTP peuvent échanger des messages entre eux. Toutefois, HTTP utilise la sérialisation XML ; les propriétés des messages, le contenu, les tags et les clés doivent donc être conformes aux spécifications XML. Encodez les messages non conformes en Base64.
RemarquePour les spécifications XML, consultez la syntaxe XML. Pour valider le XML, utilisez un outil tiers tel que xml_validator.
Des endpoints publics et privés sont disponibles dans toutes les régions pour les protocoles TCP et HTTP. Pour les charges de travail de production, accédez à ApsaraMQ for RocketMQ via un réseau privé virtuel (VPC). Pour l'accès interrégional, l'accès depuis les locaux ou l'accès Internet lorsque Cloud Enterprise Network (CEN) n'est pas disponible, utilisez un endpoint public. Le trafic via l'endpoint public entraîne des frais de trafic Internet sortant. Pour plus d'informations, consultez la Facturation du trafic Internet.