Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Mise en route : création et connexion à un courtier RabbitMQ
Un agent est un environnement d'agent de messages qui s'exécute sur Amazon MQ. Il constitue la composante de base d'Amazon MQ. Description combinée de la classe de l'instance de l'agent (m5
, t3
) et la taille (large
, micro
) est un type d'instance d'agent (par exemple, mq.m5.large
). Pour plus d’informations, consultez Qu'est-ce qu'un courtier Amazon MQ pour RabbitMQ ?.
Étape 1 : Créez un courtier RabbitMQ
La tâche Amazon MQ la plus importante et la plus courante consiste à créer un agent. L'exemple suivant montre comment vous pouvez utiliser le AWS Management Console pour créer un courtier de base.
Connectez-vous à la console Amazon MQ
. -
Dans la page Select broker engine (Sélectionner le moteur de l'agent), choisissez RabbitMQ, puis choisissez Next (Suivant).
-
Dans la page Select deployment mode (Sélectionner le mode de déploiement), choisissez le mode de déploiement, par exemple, Cluster deployment (Déploiement en cluster), puis choisissez Next (Suivant).
-
Un broker à instance unique est composé d'un courtier dans une zone de disponibilité derrière un Network Load Balancer NLB (). Le broker communique avec votre application et avec un volume EBS de stockage Amazon. Pour de plus amples informations, veuillez consulter Option 1 : courtier à instance unique Amazon MQ pour RabbitMQ.
-
Un déploiement en cluster RabbitMQ pour une haute disponibilité est un regroupement logique de trois nœuds d'agent RabbitMQ derrière d'un Network Load Balancer, chacun partageant des utilisateurs, des files d'attente et un état distribué sur plusieurs zones de disponibilité (AZ). Pour de plus amples informations, veuillez consulter Option 2 : déploiement du cluster Amazon MQ pour RabbitMQ.
-
-
Sur la page Configure settings (Configurer les paramètres), dans la section Details (Détails), effectuez ce qui suit :
-
Saisissez le nom de l'agent.
Important
N'ajoutez pas d'informations personnellement identifiables (PII) ou d'autres informations confidentielles ou sensibles dans les noms des courtiers. Les noms des courtiers sont accessibles à d'autres AWS services, notamment CloudWatch aux journaux. Les noms d'agents ne sont pas destinées à être utilisées pour des données privées ou sensibles.
Cliquez sur Broker instance type (Type d'instance de l'agent) (par exemple, mq.m5.large). Pour de plus amples informations, veuillez consulter Broker instance types.
Note
La section Paramètres supplémentaires propose des options permettant d'activer CloudWatch les journaux et de configurer l'accès au réseau pour votre courtier. Si vous créez un courtier RabbitMQ privé sans accès public, vous devez sélectionner un cloud privé virtuel (VPC) et configurer un groupe de sécurité pour accéder à votre courtier.
-
-
Dans la page Configure settings (Configuration des paramètres), dans la section RabbitMQ access (Accès à RabbitMQ), renseignez les champs Username (Nom d'utilisateur) et Password (Mot de passe). Les restrictions suivantes s'appliquent aux informations d’identification de connexion des agents :
Votre nom d'utilisateur peut contenir uniquement des caractères alphanumériques, des tirets, des points et des traits de soulignement (- . _). Cette valeur ne doit pas contenir de caractères tilde (~). Amazon MQ interdit l'utilisation de
guest
comme nom d'utilisateur.-
Votre mot de passe doit comporter 12 caractères minimum, dont au moins 4 caractères uniques, et ne doit pas contenir de virgules, de deux-points ou de signes égal (,:=).
Important
N'ajoutez pas d'informations personnellement identifiables (PII) ou d'autres informations confidentielles ou sensibles dans les noms d'utilisateur des courtiers. Les noms d'utilisateur des courtiers sont accessibles à d'autres AWS services, notamment aux CloudWatch journaux. Les noms d'utilisateur des agents ne sont pas destinées à être utilisées pour des données privées ou sensibles.
-
Choisissez Suivant.
-
Dans la page Review and create (Vérifier et créer), vous pouvez vérifier vos sélections et les modifier si nécessaire.
-
Choisissez Create broker (Créer un agent).
Alors qu'Amazon MQ crée votre agent, il affiche l'état Creation in progress (Création en cours).
La création d'un agent prend environ 15 minutes.
Lorsque votre agent est créé avec succès, Amazon MQ affiche l'état Running (En cours d'exécution).
-
Choisissez
MyBroker
.Dans la page
MyBroker
page, dans la section Connect, notez la console Web RabbitMQde votre courtierURL, par exemple : https://b-c8349341-ec91-4a78-ad9c-a57f23f235bb.mq.us-west-2.amazonaws.com
Notez également le point de AMQPterminaison sécurisé
de votre courtier. Voici un exemple de amqps
point de terminaison exposant un port d'écouteur5671
.amqps://b-c8349341-ec91-4a78-ad9c-a57f23f235bb.mq.us-west-2.amazonaws.com:5671
Étape 2 : Connectez une application JVM basée à votre courtier
Après avoir créé un agent RabbitMQ, vous pouvez y connecter votre application. Les exemples suivants montrent comment utiliser la bibliothèque client Java RabbitMQ
Prérequis
Note
Les étapes préalables suivantes ne s'appliquent qu'aux agents RabbitMQ créés sans accès public. Si vous créez un agent avec accès public, vous pouvez les ignorer.
Activer VPC les attributs
Pour vous assurer que votre courtier est accessible au sein de votreVPC, vous devez activer les enableDnsSupport
VPC attributs enableDnsHostnames
et. Pour plus d'informations, consultez la section DNSSupport VPC dans le guide de VPC l'utilisateur Amazon.
Activer les connexions entrantes
Connectez-vous à la console Amazon MQ
. Dans la liste des courtiers, choisissez le nom de votre courtier (par exemple, MyBroker).
-
Dans la page
MyBroker
page, dans la section Connexions, notez les adresses et les ports de la console Web du courtier URL et des protocoles au niveau du fil. -
Dans la section Details (Détails), sous Security and network (Sécurité et réseau), choisissez le nom de votre groupe de sécurité ou .
La page Groupes de sécurité du EC2 tableau de bord s'affiche.
-
Dans la liste des groupes de sécurité, choisissez votre groupe de sécurité.
-
Au bas de la page, choisissez Entrant, puis Modifier.
-
Dans la boîte de dialogue Modifier les règles entrantes, ajoutez une règle pour chaque URL point de terminaison que vous souhaitez rendre accessible au public (l'exemple suivant montre comment procéder pour une console Web de courtier).
-
Choisissez Add Rule (Ajouter une règle).
-
Pour Type, sélectionnez Personnalisé TCP.
-
Pour Source, laissez l'option Custom (Personnalisée) sélectionnée, puis tapez l'adresse IP du système qui doit pouvoir accéder à la console web (par exemple,
192.0.2.1
). -
Choisissez Save (Enregistrer).
Votre agent peut désormais accepter les connexions entrantes.
-
Ajout de dépendances Java
Si vous utilisez Apache Maven pour automatiser les builds, ajoutez la dépendance suivante à votre fichier pom.xml
. Pour plus d'informations sur les fichiers de modèles d'objets de projet dans Apache Maven, consultez Présentation du POM
<dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>5.9.0</version> </dependency>
Si vous utilisez Gradle
dependencies { compile 'com.rabbitmq:amqp-client:5.9.0' }
Importer les classe Connection
et Channel
Le client Java RabbitMQ utilise com.rabbitmq.client
comme package de premier niveau, des Channel
API classes Connection
et représentant respectivement une connexion et un canal AMQP 0-9-1. Importez les classe Connection
et Channel
avant de les utiliser, comme illustré dans l'exemple suivant.
import com.rabbitmq.client.Connection; import com.rabbitmq.client.Channel;
Créer un ConnectionFactory
et se connecter à votre agent
Utilisez l'exemple suivant pour créer une instance de la classe ConnectionFactory
avec les paramètres donnés. Utilisation de la méthode setHost
pour configurer le point de terminaison de l'agent noté précédemment. Pour les connexions au niveau filaire AMQPS
, utilisez le port 5671
.
ConnectionFactory factory = new ConnectionFactory(); factory.setUsername(username); factory.setPassword(password); //Replace the URL with your information factory.setHost("
b-c8352341-ec91-4a78-ad9c-a43f23d325bb.mq.us-west-2.amazonaws.com
"); factory.setPort(5671); // Allows client to establish a connection over TLS factory.useSslProtocol(); // Create a connection Connection conn = factory.newConnection(); // Create a channel Channel channel = conn.createChannel();
Publier un message dans un échange
Vous pouvez utiliser Channel.basicPublish
pour publier des messages dans un échange. L'exemple suivant utilise la AMQP Builder
classe pour créer un objet de propriétés de message avec content-typeplain/text
.
byte[] messageBodyBytes = "Hello, world!".getBytes(); channel.basicPublish(exchangeName, routingKey, new AMQP.BasicProperties.Builder() .contentType("text/plain") .userId("userId") .build(), messageBodyBytes);
Note
Notez que BasicProperties
est une classe interne de la classe de support générée automatiquement, AMQP
.
S'abonner à une file d'attente et recevoir un message
Vous pouvez recevoir un message en vous abonnant à une file d'attente à l'aide de l'interface Consumer
. Une fois abonné, les messages seront alors remis automatiquement dès leur arrivée.
La façon la plus simple d'implémenter un objet Consumer
est d'utiliser la sous-classe DefaultConsumer
. Un objet DefaultConsumer
peut être transmis comme faisant partie d'un appel basicConsume
pour configurer l'abonnement comme illustré dans l'exemple suivant.
boolean autoAck = false; channel.basicConsume(queueName, autoAck, "myConsumerTag", new DefaultConsumer(channel) { @Override public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException { String routingKey = envelope.getRoutingKey(); String contentType = properties.getContentType(); long deliveryTag = envelope.getDeliveryTag(); // (process the message components here ...) channel.basicAck(deliveryTag, false); } });
Note
Parce que nous avons spécifié autoAck = false
, il est nécessaire d'accuser réception des messages remis à Consumer
, le plus commodément fait dans la méthode handleDelivery
, comme illustré dans l'exemple.
Fermer votre connexion et se déconnecter de l'agent
Afin de vous déconnecter de votre agent RabbitMQ, fermez à la fois le canal et la connexion comme indiqué ci-dessous.
channel.close(); conn.close();
Note
Pour plus d'informations sur l'utilisation de la bibliothèque cliente Java RabbitMQ, consultez le Guide du client Java RabbitMQ
Étape 3 : (Facultatif) Se connecter à une AWS Lambda fonction
AWS Lambda peut se connecter à votre courtier Amazon MQ et en consommer les messages. Lorsque vous connectez un agent à Lambda, vous créez un mappage de la source d'événement qui lit les messages d'une file d'attente et appelle la fonction de manière synchrone. Le mappage des sources d'événements que vous créez lit les messages de votre courtier par lots et les convertit en une charge utile Lambda sous la forme d'un objet. JSON
Pour connecter votre agent à une fonction Lambda
-
Ajoutez les autorisations de IAM rôle suivantes à votre rôle d'exécution de fonction Lambda.
Note
Sans les IAM autorisations nécessaires, votre fonction ne pourra pas lire correctement les enregistrements des ressources Amazon MQ.
-
(Facultatif) Si vous avez créé un agent sans accès public, vous devez effectuer l'une des opérations suivantes pour permettre à Lambda de se connecter à votre agent :
-
Configurez une NAT passerelle par sous-réseau public. Pour plus d'informations, consultez la section Accès à Internet et aux services pour les fonctions VPC connectées dans le Guide du AWS Lambda développeur.
-
Créez une connexion entre votre Amazon Virtual Private Cloud (AmazonVPC) et Lambda à l'aide d'un VPC point de terminaison. Votre Amazon VPC doit également se connecter à AWS Security Token Service (AWS STS) et aux points de terminaison Secrets Manager. Pour plus d'informations, consultez la section Configuration des VPC points de terminaison d'interface pour Lambda dans AWS Lambda le Guide du développeur.
-
-
Configurez votre agent en tant que source d'événement pour une fonction Lambda à l'aide de la AWS Management Console. Vous pouvez également utiliser la
create-event-source-mapping
AWS Command Line Interface commande. -
Écrivez du code pour votre fonction Lambda pour traiter les messages de votre consommateur à partir de votre agent. La charge utile Lambda récupérée par votre mappage de source d'événement dépend du type de moteur de l'agent. Voici un exemple de charge utile Lambda pour une file d'attente Amazon MQ for RabbitMQ.
Note
Dans l'exemple,
test
est le nom de la file d'attente et/
est le nom de l'hôte virtuel par défaut. Lors de la réception de messages, la source d'événement répertorie les messages soustest::/
.{ "eventSource": "aws:rmq", "eventSourceArn": "arn:aws:mq:us-west-2:112556298976:broker:test:b-9bcfa592-423a-4942-879d-eb284b418fc8", "rmqMessagesByQueue": { "test::/": [ { "basicProperties": { "contentType": "text/plain", "contentEncoding": null, "headers": { "header1": { "bytes": [ 118, 97, 108, 117, 101, 49 ] }, "header2": { "bytes": [ 118, 97, 108, 117, 101, 50 ] }, "numberInHeader": 10 } "deliveryMode": 1, "priority": 34, "correlationId": null, "replyTo": null, "expiration": "60000", "messageId": null, "timestamp": "Jan 1, 1970, 12:33:41 AM", "type": null, "userId": "AIDACKCEVSQ6C2EXAMPLE", "appId": null, "clusterId": null, "bodySize": 80 }, "redelivered": false, "data": "eyJ0aW1lb3V0IjowLCJkYXRhIjoiQ1pybWYwR3c4T3Y0YnFMUXhENEUifQ==" } ] } }
Pour plus d'informations sur la connexion d'Amazon MQ à Lambda, les options prises en charge par Lambda pour une source d'événement Amazon MQ et les erreurs de mappage de la source d'événement, consultez Utilisation de Lambda avec Amazon MQ dans le Guide du développeur AWS Lambda .