Erstellen und Verbinden mit einem RabbitMQ-Broker - Amazon MQ

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Erstellen und Verbinden mit einem RabbitMQ-Broker

Ein Broker ist eine Message-Broker-Umgebung, die auf Amazon MQ ausgeführt wird. Dies ist der Grundblock für Amazon MQ. Die kombinierte Beschreibung der Broker-Instanceclass(m5,t3) undsize(large,micro) ist einBroker-Instance-Typ(z. B.mq.m5.large).

Schritt 1: Erstellen eines RabbitMQ-Brokers

Die erste und häufigste Amazon MQ-Aufgabe ist das Erstellen eines Brokers. Das folgende Beispiel zeigt, wie Sie den verwenden können AWS Management Console , um einen Basisbroker zu erstellen.

  1. Melden Sie sich bei der Amazon MQ-Konsole an.

  2. Klicken Sie auf derWählen Sie Broker-EngineWählen Sie auf der SeiteRabbitMQKlicken Sie auf und danach auf Weiter.

  3. Klicken Sie auf derAuswählen des BereitstellungsmodusWählen Sie auf der SeiteBereitstellungsmodusZum BeispielCluster-BereitstellungKlicken Sie auf und danach auf Weiter.

    • Ein Single-Instance-Broker besteht aus einem Broker in einer Availability Zone hinter einem Network Load Balancer ()NLB. Der Broker kommuniziert mit Ihrer Anwendung und mit einem EBS Amazon-Speichervolumen. Weitere Informationen finden Sie unter Single-Instance Broker.

    • Eine Bereitstellung von RabbitMQ-Clustern für hohe Verfügbarkeit ist eine logische Gruppierung von drei RabbitMQ-Broker-Knoten hinter einem Network Load Balancer, wobei jeder Benutzer, Warteschlangen und ein verteilter Status über mehrere Availability Zones (AZ) verfügt. Weitere Informationen finden Sie unter Cluster-Bereitstellung für hohe Verfügbarkeit.

  4. Auf der Seite Einstellungen konfigurieren geben Sie im Abschnitt Details Folgendes ein:

    1. Geben Sie den Broker-Namen ein.

      Wichtig

      Fügen Sie den Namen der Makler keine personenbezogenen Daten (PII) oder andere vertrauliche oder sensible Informationen hinzu. Broker-Namen sind für andere AWS Dienste zugänglich, einschließlich CloudWatch Logs. Brokernamen sind nicht für private oder sensible Daten gedacht.

    2. Wählen Sie den Broker-Instance-Typ (z. B. mq.m5.large). Weitere Informationen finden Sie unter Broker instance types.

    Anmerkung

    Der Abschnitt Zusätzliche Einstellungen bietet Optionen zum Aktivieren von CloudWatch Protokollen und zum Konfigurieren des Netzwerkzugriffs für Ihren Broker. Wenn Sie einen privaten RabbitMQ-Broker ohne öffentlichen Zugriff erstellen, müssen Sie eine Virtual Private Cloud (VPC) auswählen und eine Sicherheitsgruppe für den Zugriff auf Ihren Broker konfigurieren.

  5. Klicken Sie auf derKonfigurieren der EinstellungenKlicken Sie auf der SeiteZugriff auf RabbitMQ-Abschnitt eineBenutzername:undPasswort. Die folgenden Einschränkungen gelten in Bezug auf Broker-Anmeldeinformationen:

    • Er darf nur alphanumerische Zeichen, Bindestriche, Punkte, Unterstriche und Tilden (-. _) enthalten. Dieser Wert darf keine Tilde (~) Zeichen enthalten. Amazon MQ verbietet die Verwendung von guest als Benutzernamen.

    • Dieser Wert muss mindestens 12 Zeichen lang sein, muss mindestens 4 eindeutige Zeichen enthalten und darf keine Kommas, Doppelpunkte oder Gleichheitszeichen (,:=) enthalten.

    Wichtig

    Fügen Sie den Benutzernamen von Brokern keine personenbezogenen Daten (PII) oder andere vertrauliche oder sensible Informationen hinzu. Broker-Benutzernamen sind für andere AWS Dienste zugänglich, einschließlich CloudWatch Logs. Broker-Benutzernamen sind nicht für private oder sensible Daten gedacht.

  6. Wählen Sie Weiter.

  7. Auf der Seite Überprüfen und erstellen können Sie Ihre Auswahl überprüfen und sie nach Bedarf bearbeiten.

  8. Wählen Sie Create broker (Broker erstellen).

    Während Amazon MQ Ihren Broker erstellt, zeigt er den Wird erstellt-Status an.

    Die Erstellung eines Brokers dauert etwa 15 Minuten.

    Wenn Ihr Broker erfolgreich erstellt wurde, zeigt Amazon MQ den Running-Status (Ausführung) an.

    Amazon MQ console showing a broker named "MyBroker" with Running status. (AI generated)
  9. Wählen Sie aus.MyBroker.

    Auf der MyBrokerNotieren Sie sich auf der Seite im Bereich Connect die RabbitMQ-Webkonsole Ihres BrokersURL, zum Beispiel:

    https://b-c8349341-ec91-4a78-ad9c-a57f23f235bb.mq.us-west-2.amazonaws.com

    Notieren Sie sich auch den sicheren Endpunkt Ihres Brokers. AMQP Es folgt ein Beispiel für einamqpsEndpunkt Zuweisen auf Listener-Port5671.

    amqps://b-c8349341-ec91-4a78-ad9c-a57f23f235bb.mq.us-west-2.amazonaws.com:5671

Schritt 2: Verbinden Sie eine JVM basierte Anwendung mit Ihrem Broker

Nachdem Sie einen RabbitMQ-Broker erstellt haben, können Sie Ihre Anwendung mit ihm verbinden. Die folgenden Beispiele zeigen, wie Sie die RabbitMQ-Client-Bibliothek, um eine Verbindung zu Ihrem Broker zu erstellen, eine Warteschlange zu erstellen und eine Nachricht zu senden. Sie können sich mit RabbitMQ-Brokern verbinden, indem Sie unterstützte RabbitMQ-Client-Bibliotheken für eine Vielzahl von Sprachen verwenden. Weitere Informationen zu unterstützten RabbitMQ-Client-Bibliotheken finden Sie unterRabbitMQ-Client-Bibliotheken und Entwickler-Tools.

Voraussetzungen

Anmerkung

Die folgenden Schritte gelten nur für RabbitMQ-Broker, die ohne öffentliche Zugänglichkeit erstellt wurden. Wenn Sie einen Broker mit öffentlicher Barrierefreiheit erstellen, können Sie ihn überspringen.

Aktivieren Sie VPC Attribute

Um sicherzustellen, dass Ihr Broker in Ihrem erreichbar istVPC, müssen Sie die enableDnsSupport VPC Attribute enableDnsHostnames und aktivieren. Weitere Informationen finden Sie unter DNSSupport VPC in Ihrem VPC Amazon-Benutzerhandbuch.

Eingehende Verbindungen aktivieren

  1. Melden Sie sich bei der Amazon MQ-Konsole an.

  2. Wählen Sie aus der Brokerliste den Namen Ihres Brokers aus (z. B. MyBroker).

  3. Auf der MyBrokerNotieren Sie sich im Abschnitt Verbindungen die Adressen und Ports der Webkonsole URL und der Wire-Level-Protokolle des Brokers.

  4. Wählen Sie im Abschnitt Details unter Sicherheit und Netzwerk den Namen Ihrer Sicherheitsgruppe oder Blue square icon with a white cloud and up arrow. (AI generated) .

    Die Seite „Sicherheitsgruppen“ des EC2 Dashboards wird angezeigt.

  5. Wählen Sie in der Liste der Sicherheitsgruppen Ihre Sicherheitsgruppe.

  6. Klicken Sie unten auf der Seite auf Inbound (Eingehend) und anschließend auf Edit (Bearbeiten).

  7. Fügen Sie im Dialogfeld „Regeln für eingehenden Datenverkehr bearbeiten“ eine Regel für jeden URL oder Endpunkt hinzu, auf den Sie öffentlich zugreifen möchten (das folgende Beispiel zeigt, wie Sie dies für eine Broker-Webkonsole tun können).

    1. Klicken Sie auf Add Rule (Regel hinzufügen).

    2. Wählen Sie für Typ die Option Benutzerdefiniert TCP aus.

    3. Für Source (Quelle), lassen Sie Custom (Benutzerdefiniert) ausgewählt, und geben Sie dann die IP-Adresse des Systems ein, auf das auf die Webkonsole zugegriffen werden soll (z. B. 192.0.2.1) enthalten.

    4. Wählen Sie Save.

      Ihr Broker kann nun eingehende Verbindungen akzeptieren.

Java-Abhängigkeiten hinzufügen

Wenn Sie Apache Maven zum Automatisieren von Builds verwenden, fügen Sie die folgende Abhängigkeit zu Ihrerpom.xmlDatei. Weitere Informationen zu Project Object Model-Dateien in Apache Maven finden Sie unter Einführung in die POM.

<dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>5.9.0</version> </dependency>

Wenn Sie Gradle zum Automatisieren von Builds verwenden, deklarieren Sie die folgende Abhängigkeit.

dependencies { compile 'com.rabbitmq:amqp-client:5.9.0' }

Import Connection und Channel Klassen

Der RabbitMQ Java-Client verwendet com.rabbitmq.client als Paket der obersten Ebene, wobei Connection und Channel API Klassen jeweils für eine AMQP 0-9-1-Verbindung und einen Kanal stehen. Importieren Sie die Connection und Channel Klassen vor der Verwendung, wie im folgenden Beispiel gezeigt.

import com.rabbitmq.client.Connection; import com.rabbitmq.client.Channel;

Erstellen Sie ein ConnectionFactory und verbinden Sie es mit Ihrem Broker

Mithilfe des folgenden Beispiels können Sie eine Instance der ConnectionFactory-Klasse mit den gegebenen Parametern. Verwenden Sie die setHost Methode um den Broker-Endpunkt zu konfigurieren, den Sie zuvor notiert haben. FürAMQPSWire-Level-Verbindungen, Port verwenden5671.

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();

Veröffentlichen einer Nachricht in einem Börse

Sie können Channel.basicPublish verwenden, um Nachrichten in einem Austausch veröffentlichen. Im folgenden Beispiel wird die AMQP Builder Klasse verwendet, um ein Nachrichteneigenschaftenobjekt mit dem Inhaltstyp zu erstellen. plain/text

byte[] messageBodyBytes = "Hello, world!".getBytes(); channel.basicPublish(exchangeName, routingKey, new AMQP.BasicProperties.Builder() .contentType("text/plain") .userId("userId") .build(), messageBodyBytes);
Anmerkung

Beachten Sie, dassBasicPropertiesist eine innere Klasse der automatisch generierten Holder-Klasse,AMQP.

Abonnieren Sie eine Warteschlange und erhalten Sie eine Nachricht

Sie können eine Nachricht erhalten, indem Sie eine Warteschlange mit der Consumer-Schnittstelle implementieren. Sobald sie abonniert sind, werden Nachrichten automatisch zugestellt, sobald sie eintreffen.

Der einfachste Weg, um einConsumerbesteht darin, die UnterklasseDefaultConsumer. Ein DefaultConsumer-Objekt kann als Teil eines basicConsume-Aufrufs, um das Abonnement einzurichten, wie im folgenden Beispiel gezeigt.

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); } });
Anmerkung

Weil wir autoAck = false spezifizieren, ist es notwendig, Nachrichten zu bestätigen, die an die Consumer geliefert werden, am bequemsten in der handleDelivery-Methode wie im Beispiel gezeigt.

Schließen Sie Ihre Verbindung und trennen Sie vom Broker

Um die Verbindung zu Ihrem RabbitMQ-Broker zu trennen, schließen Sie sowohl den Kanal als auch die Verbindung, wie im Folgenden dargestellt.

channel.close(); conn.close();

Schritt 3: (Optional) Stellen Sie eine Verbindung zu einer Funktion her AWS Lambda

AWS Lambda kann eine Verbindung zu Ihrem Amazon MQ-Broker herstellen und Nachrichten von Ihrem Amazon MQ-Broker empfangen. Wenn Sie einen Broker mit Lambda verbinden, erstellen Sie eine Ereignisquellen-Zuweisung, der Nachrichten aus einer Warteschlange liest und die Funktionsynchron. Die von Ihnen erstellte Ereignisquellenzuordnung liest Nachrichten von Ihrem Broker stapelweise und konvertiert sie in eine Lambda-Payload in Form eines Objekts. JSON

So verbinden Sie Ihren Broker mit einer Lambda Funktion
  1. Fügen Sie Ihrer IAM Lambda-Funktionsausführungsrolle die folgenden Rollenberechtigungen hinzu.

    Anmerkung

    Ohne die erforderlichen IAM Berechtigungen kann Ihre Funktion keine Datensätze aus Amazon MQ MQ-Ressourcen erfolgreich lesen.

  2. (Optional) Wenn Sie einen Broker ohne öffentliche Zugänglichkeit erstellt haben, müssen Sie einen der folgenden Schritte ausführen, damit Lambda eine Verbindung zu Ihrem Broker herstellen kann:

    • Konfigurieren Sie ein NAT Gateway pro öffentlichem Subnetz. Weitere Informationen finden Sie unter Internet- und VPC Dienstzugriff für verbundene Funktionen im AWS Lambda Entwicklerhandbuch.

    • Stellen Sie mithilfe eines VPC Endpunkts eine Verbindung zwischen Ihrer Amazon Virtual Private Cloud (AmazonVPC) und Lambda her. Ihr Amazon VPC muss auch eine Verbindung zu AWS Security Token Service (AWS STS) und Secrets Manager Manager-Endpunkten herstellen. Weitere Informationen finden Sie unter Configuring Interface VPC Endpoints for Lambda im AWS Lambda Developer Guide.

  3. Konfigurieren Sie Ihren Broker als EreignisquelleVerwendung für eine Lambda -Funktion unter Verwendung der AWS Management Console. Sie können den Befehl auch verwenden. create-event-source-mapping AWS Command Line Interface

  4. Schreiben Sie Code für Ihre Lambda Funktion, um die von Ihrem Broker verbrauchten Nachrichten zu verarbeiten. Die Lambda-Payload, die von der Ereignisquellen-Zuweisung abgerufen wird, hängt vom Modultyp des Brokers ab. Im Folgenden finden Sie ein Beispiel für eine Lambda -Payload für eine Amazon MQ for RabbitMQ-Warteschlange.

    Anmerkung

    Im Beispiel ist test der Name der Warteschlange und / der Name des vorgegebenen virtuellen Hosts. Beim Empfang von Nachrichten listet die Ereignisquelle Nachrichten unter test::/ auf.

    { "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==" } ] } }

Weitere Informationen zum Verbinden von Amazon MQ mit Lambda, zu den Optionen, die Lambda für eine Amazon-MQ-Ereignisquelle unterstützt, und zu Fehlern bei der Ereignisquellen-Zuweisung finden Sie unter Verwenden von Lambda mit Amazon MQ im AWS Lambda -Entwicklerhandbuch.

Schritt 4: Löschen Ihres Brokers

Wenn Sie keinen Amazon MQ-Broker verwenden (und nicht damit rechnen, ihn in naher future zu verwenden), empfiehlt es sich, ihn aus Amazon MQ zu löschen, um Ihre Kosten zu senken. AWS

Das folgende Beispiel zeigt, wie Sie einen Broker mithilfe der AWS Management Console neu starten.

  1. Melden Sie sich bei der Amazon-MQ-Konsole an.

  2. Wählen Sie in der Brokerliste Ihren Broker aus (zum Beispiel MyBroker) und wählen Sie dann Löschen.

  3. Im Bereich Löschen MyBroker? Dialogfeld, geben Sie den Text ein delete und wählen Sie dann Löschen.

    Das Löschen eines Brokers dauert ca. 15 Minuten.

Nächste Schritte

Nachdem Sie nun einen Broker erstellt, eine Anwendung mit diesem verbunden und eine Nachricht gesendet und empfangen haben, können Sie Folgendes ausprobieren:

Sie können sich auch eingehend mit den Best Practices für Amazon MQ und Amazon MQ befassen, REST APIs bevor Sie eine Migration zu Amazon MQ planen.