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.
Erste Schritte: Einen ActiveMQ-Broker erstellen und eine Verbindung zu ihm herstellen
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(zum Beispielmq.m5.large
). Weitere Informationen finden Sie unter Was ist ein Amazon MQ for ActiveMQ-Broker?.
Schritt 1: Erstellen Sie einen ActiveMQ-Broker
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 einfachen Broker zu erstellen.
Melden Sie sich bei der Amazon MQ-Konsole
an. -
Wählen Sie auf der Seite Broker-Engine auswählen die Option Apache ActiveMQ aus.
-
Auf der Seite Select deployment and storage (Auswählen von Bereitstellung und Speicher), tun sie das Folgende im Bereich Deployment mode and storage type (Bereitstellungsmodus und Speichertyp):
-
Wählen Sie den Bereitstellungsmodus (z. B. Aktiv/Standby-Broker). Weitere Informationen finden Sie unter Bereitstellungsoptionen für Amazon MQ für ActiveMQ-Broker.
-
Ein Single-Instance-Broker besteht aus einem Broker in einer Availability Zone. Der Broker kommuniziert mit Ihrer Anwendung und mit einem Amazon- EBS oder EFS Amazon-Speichervolumen. Weitere Informationen finden Sie unter Option 1: Amazon MQ-Broker mit einer einzigen Instanz.
-
Ein Aktiv/Standby-Broker für hohe Verfügbarkeit besteht aus zwei Brokern in zwei verschiedenen Availability Zones, die in einem redundanten Paar konfiguriert sind. Diese Broker kommunizieren synchron mit Ihrer Anwendung und mit AmazonEFS. Weitere Informationen finden Sie unter Option 2: Amazon MQ Active/Standby-Broker für hohe Verfügbarkeit.
-
Weitere Informationen zu den Beispiel-Blueprints für ein Netzwerk von Brokern finden Sie unterBeispiel-Vorlagen.
-
-
Wählen Sie den Speichertyp (z. B. EBS). Weitere Informationen finden Sie unter Storage.
Anmerkung
Amazon EBS repliziert Daten innerhalb einer einzigen Availability Zone und unterstützt den ActiveMQ-Aktiv-/Standby-Bereitstellungsmodus nicht.
Wählen Sie Weiter aus.
-
-
Gehen Sie auf der Seite Einstellungen konfigurieren im Abschnitt Details wie folgt vor:
-
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.
Wählen Sie den Broker-Instance-Typ (z. B. mq.m5.large). Weitere Informationen finden Sie unter Broker instance types.
-
-
Geben Sie im Abschnitt Zugriff auf ActiveMQ-Webkonsole einen Benutzernamen und ein Passwort an. Die folgenden Einschränkungen gelten in Bezug auf Benutzernamen und Passwörter des Brokers:
-
Ihr Benutzername darf nur alphanumerische Zeichen, Bindestriche, Punkte, Unterstriche und Tilden (- . _ ~) enthalten.
-
Ihr Psswort 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 Broker-Benutzernamen 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.
-
-
Wählen Sie Deploy (Bereitstellen) aus.
Während Amazon MQ Ihren Broker erstellt, zeigt er denWird erstelltStatus an.
Die Erstellung eines Brokers dauert etwa 15 Minuten.
Wenn Ihr Broker erfolgreich erstellt wurde, zeigt Amazon MQ den Running-Status (Ausführung) an.
-
Wählen Sie aus.
MyBroker
.Auf der
MyBroker
Notieren Sie sich auf der Seite im Bereich Connect die ActiveMQ-WebkonsoleIhres BrokersURL, zum Beispiel: https://b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-east-2.amazonaws.com:8162
Beachten Sie auch dieWire-Level-Protokoll-Endpunkte
. Das Folgende ist ein Beispiel für einen OpenWire Endpunkt: ssl://b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-east-2.amazonaws.com:61617
Schritt 2: Connect eine Java-Anwendung mit Ihrem Broker
Nachdem Sie einen Amazon MQ ActiveMQ Broker erstellt haben, können Sie Ihre Anwendung mit ihm verbinden. Die folgenden Beispiele zeigen, wie Sie den Java Message Service (JMS) verwenden können, um eine Verbindung zum Broker herzustellen, eine Warteschlange zu erstellen und eine Nachricht zu senden. Ein vollständiges, funktionierendes Java-Beispiel finden Sie unterWorking Java Example.
Sie können unter Verwendung verschiedener ActiveMQ-Clients
Voraussetzungen
VPCAttribute aktivieren
Anmerkung
Sie können die öffentliche Zugänglichkeit für Ihre vorhandenen Amazon-MQ-Broker nicht deaktivieren.
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
Verwenden Sie als Nächstes die folgenden Anweisungen, um eingehende Verbindungen für Ihren Broker zu aktivieren.
Melden Sie sich bei der Amazon-MQ-Konsole
an. Wählen Sie aus der Brokerliste den Namen Ihres Brokers aus (z. B. MyBroker).
-
Auf der
MyBroker
Notieren Sie sich im Abschnitt Verbindungen die Adressen und Ports der Webkonsole URL und der Wire-Level-Protokolle des Brokers. -
Wählen Sie im Abschnitt Details unter Sicherheit und Netzwerk den Namen Ihrer Sicherheitsgruppe oder .
Die Seite „Sicherheitsgruppen“ des EC2 Dashboards wird angezeigt.
-
Wählen Sie in der Liste der Sicherheitsgruppen Ihre Sicherheitsgruppe.
-
Klicken Sie unten auf der Seite auf Inbound (Eingehend) und anschließend auf Edit (Bearbeiten).
-
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).
-
Klicken Sie auf Add Rule (Regel hinzufügen).
-
Wählen Sie für Typ die Option Benutzerdefiniert TCP aus.
-
Für Port-Bereich, geben Sie den Port der Webkonsole ein (
8162
). -
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. -
Wählen Sie Save.
Ihr Broker kann nun eingehende Verbindungen akzeptieren.
-
Java-Abhängigkeiten hinzufügen
Fügen Sie dem Pfad für Ihre Java-Build-Klasse die Pakete activemq-client.jar
und activemq-pool.jar
hinzu. Das folgende Beispiel zeigt diese Abhängigkeiten in der pom.xml
-Datei eines Maven-Projekts.
<dependencies> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-client</artifactId> <version>5.15.16</version> </dependency> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-pool</artifactId> <version>5.15.16</version> </dependency> </dependencies>
Weitere Informationen über activemq-client.jar
finden Sie unter Ursprüngliche Konfiguration
Wichtig
Im folgenden Beispielcode laufen Hersteller und Verbraucher in einem einzigen Thread. Stellen Sie für Produktionssysteme (oder zum Testen des Failovers von Broker-Instances) sicher, dass Ihre Produzenten und Verbraucher auf separaten Hosts oder Threads ausgeführt werden.
Erstellen eines Nachrichtenproduzenten und Senden einer Nachricht
Stellen Sie als Nächstes sicher, dass Ihr Broker eine Nachricht empfangen kann, indem Sie einen Nachrichtengenerator erstellen und eine Nachricht senden.
-
Erstellen Sie mithilfe des Endpunkts Ihres Brokers eine JMS gepoolte Verbindungs-Factory für den Nachrichtenproduzenten und rufen Sie dann die
createConnection
Methode für die Factory auf.Anmerkung
Für einen Aktiv-/Standby-Broker bietet Amazon MQ zwei ActiveMQ-Web-KonsolenURLs, von denen jedoch jeweils nur eine aktiv URL ist. Ebenso stellt Amazon MQ zwei Endpunkte für jedes Wire-Level-Protokoll bereit, jedoch ist jeweils nur ein Endpunkt in jedem Paar aktiv. Die
-1
- und-2
-Suffixe bezeichnen ein redundantes Paar. Weitere Informationen finden Sie unter Bereitstellungsoptionen für Amazon MQ für ActiveMQ-Broker).Für Drahtebene Protokollendpunkte können Sie zulassen, dass Ihre Anwendung eine Verbindung zu einem beliebigen Endpunkt herstellen kann, indem Sie dieFailover-Transport
verwenden. // Create a connection factory. final ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(wireLevelEndpoint); // Pass the sign-in credentials. connectionFactory.setUserName(activeMqUsername); connectionFactory.setPassword(activeMqPassword); // Create a pooled connection factory. final PooledConnectionFactory pooledConnectionFactory = new PooledConnectionFactory(); pooledConnectionFactory.setConnectionFactory(connectionFactory); pooledConnectionFactory.setMaxConnections(10); // Establish a connection for the producer. final Connection producerConnection = pooledConnectionFactory.createConnection(); producerConnection.start(); // Close all connections in the pool. pooledConnectionFactory.clear();
Anmerkung
Nachrichtenproduzenten sollten immer die
PooledConnectionFactory
-Klasse. Weitere Informationen finden Sie unter Verwenden Sie immer Verbindungspools. -
Erstellen Sie eine Sitzung, eine Warteschlange namens
MyQueue
und einen Nachrichtenproduzenten.// Create a session. final Session producerSession = producerConnection.createSession(false, Session.AUTO_ACKNOWLEDGE); // Create a queue named "MyQueue". final Destination producerDestination = producerSession.createQueue("MyQueue"); // Create a producer from the session to the queue. final MessageProducer producer = producerSession.createProducer(producerDestination); producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
-
Erstellen der Nachrichtenzeichenfolge
"Hello from Amazon MQ!"
Dann senden Sie die Nachricht.// Create a message. final String text = "Hello from Amazon MQ!"; TextMessage producerMessage = producerSession.createTextMessage(text); // Send the message. producer.send(producerMessage); System.out.println("Message sent.");
-
Bereinigen Sie den Produzenten.
producer.close(); producerSession.close(); producerConnection.close();
Erstellen eines Nachrichtenkonsumenten und Empfangen der Nachricht
Nachdem Sie einen Producer erstellt haben, erstellen Sie einen Consumer, um zu überprüfen, ob er die Nachricht empfangen kann.
-
Erstellen Sie mithilfe des Endpunkts Ihres Brokers eine JMS Verbindungs-Factory für den Nachrichtenproduzenten und rufen Sie dann die
createConnection
Methode für die Factory auf.// Create a connection factory. final ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(wireLevelEndpoint); // Pass the sign-in credentials. connectionFactory.setUserName(activeMqUsername); connectionFactory.setPassword(activeMqPassword); // Establish a connection for the consumer. final Connection consumerConnection = connectionFactory.createConnection(); consumerConnection.start();
Anmerkung
Die Nachrichtenkonsumenten sollten nie die
PooledConnectionFactory
-Klasse verwenden. Weitere Informationen finden Sie unter Verwenden Sie immer Verbindungspools. -
Erstellen Sie eine Sitzung, eine Warteschlange namens
MyQueue
und einem Nachrichtenverbraucher.// Create a session. final Session consumerSession = consumerConnection.createSession(false, Session.AUTO_ACKNOWLEDGE); // Create a queue named "MyQueue". final Destination consumerDestination = consumerSession.createQueue("MyQueue"); // Create a message consumer from the session to the queue. final MessageConsumer consumer = consumerSession.createConsumer(consumerDestination);
-
Beginnen Sie, auf Nachrichten zu warten und die Nachricht zu erhalten, wenn sie eintrifft.
// Begin to wait for messages. final Message consumerMessage = consumer.receive(1000); // Receive the message when it arrives. final TextMessage consumerTextMessage = (TextMessage) consumerMessage; System.out.println("Message received: " + consumerTextMessage.getText());
Anmerkung
Im Gegensatz zu AWS Messaging-Diensten (wie AmazonSQS) ist der Verbraucher ständig mit dem Broker verbunden.
-
Schließen Sie den Verbraucher, die Sitzung und die Verbindung.
consumer.close(); consumerSession.close(); consumerConnection.close();
Schritt 3: (Optional) Connect zu einer AWS Lambda Funktion herstellen
AWS Lambda kann eine Verbindung zu Ihrem Amazon MQ-Broker herstellen und Nachrichten von diesem 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
-
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.
-
(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.
-
-
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 -
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-Nutzlast für eine Warteschlange in Amazon MQ für RabbitMQ.
Anmerkung
Im Beispiel ist
testQueue
der Name der Warteschlange.{ "eventSource": "aws:amq", "eventSourceArn": "arn:aws:mq:us-west-2:112556298976:broker:test:b-9bcfa592-423a-4942-879d-eb284b418fc8", "messages": { [ { "messageID": "ID:b-9bcfa592-423a-4942-879d-eb284b418fc8-1---mq---us-west-2.amazonaws.com.rproxy.goskope.com-37557-1234520418293-4:1:1:1:1", "messageType": "jms/text-message", "data": "QUJDOkFBQUE=", "connectionId": "myJMSCoID", "redelivered": false, "destination": { "physicalname": "testQueue" }, "timestamp": 1598827811958, "brokerInTime": 1598827811958, "brokerOutTime": 1598827811959 }, { "messageID": "ID:b-9bcfa592-423a-4942-879d-eb284b418fc8-1---mq---us-west-2.amazonaws.com.rproxy.goskope.com-37557-1234520418293-4:1:1:1:1", "messageType":"jms/bytes-message", "data": "3DTOOW7crj51prgVLQaGQ82S48k=", "connectionId": "myJMSCoID1", "persistent": false, "destination": { "physicalname": "testQueue" }, "timestamp": 1598827811958, "brokerInTime": 1598827811958, "brokerOutTime": 1598827811959 } ] } }
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.