Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Guida introduttiva: creazione e connessione a un broker ActiveMQ
Un broker è un ambiente broker dei messaggi in esecuzione su Amazon MQ. Costituisce l'elemento di base di Amazon MQ. La descrizione combinata di classe (m5
, t3
) e dimensione (large
, micro
) dell'istanza del broker corrisponde a un tipo di istanza del broker (ad esempio, mq.m5.large
). Per ulteriori informazioni, consulta Cos'è un broker Amazon MQ for ActiveMQ?.
Fase 1: Creare un broker ActiveMQ
La prima attività di Amazon MQ, nonché la più comune, è la creazione di un broker. L'esempio seguente mostra come è possibile utilizzare il AWS Management Console per creare un broker di base.
Accedere alla console Amazon MQ
. -
Alla pagina Select broker engine (Seleziona motore del broker), scegliere Apache ActiveMQ.
-
Alla pagina Select deployment and storage (Seleziona implementazione e archiviazione), nella sezione Deployment mode and storage type (Modalità di implementazione e tipo di archiviazione), procedere come segue:
-
Scegliere il tipo di Deployment mode (Modalità di implementazione) (ad esempio, Active/standby broker (Broker attivo/in standby)). Per ulteriori informazioni, consulta Opzioni di implementazione per i broker Amazon MQ for ActiveMQ.
-
Un broker a istanza singola è composto da un broker in una zona di disponibilità. Il broker comunica con la tua applicazione e con un volume di EFS storage Amazon EBS o Amazon. Per ulteriori informazioni, consulta Opzione 1: broker a istanza singola Amazon MQ.
-
Un Broker attivo/in standby per alta disponibilità è composto da due broker in due diverse zone di disponibilità, configurate in una coppia ridondante. Questi broker comunicano in modo sincrono con la tua applicazione e con Amazon. EFS Per ulteriori informazioni, consulta Opzione 2: broker attivi/standby di Amazon MQ per un'elevata disponibilità.
-
Per ulteriori informazioni sugli schemi di esempio per una rete di broker, consultare Schemi di esempio.
-
-
Scegli il tipo di archiviazione (ad esempio, EBS). Per ulteriori informazioni, consulta Storage.
Nota
Amazon EBS replica i dati all'interno di una singola zona di disponibilità e non supporta la modalità di distribuzione attiva/standby di ActiveMQ.
Scegli Next (Successivo).
-
-
Alla pagina Configure settings (Configura impostazioni), nella sezione Details (Dettagli), procedere come segue:
-
Inserisci il nome del broker.
Importante
Non aggiungere informazioni di identificazione personale (PII) o altre informazioni riservate o sensibili nei nomi dei broker. I nomi dei broker sono accessibili ad altri AWS servizi, inclusi CloudWatch i registri. I nomi dei broker non sono destinati ad essere utilizzati per dati privati o sensibili.
Selezionare il tipo di istanza del broker (ad esempio, mq.m5.large). Per ulteriori informazioni, consulta Broker instance types.
-
-
Nella sezione ActiveMQ Web Console access (Accesso alla console Web di ActiveMQ), specificare nome utente e password. Per i nomi utente e le password del broker si applicano le seguenti limitazioni:
-
Il nome utente può contenere solo caratteri alfanumerici, punti, trattini e tilde (-, ., _ e ~).
-
La password deve contenere almeno 12 caratteri, di cui almeno 4 caratteri univoci, e non deve contenere virgole, due punti o il simbolo dell'uguale (,:=).
Importante
Non aggiungere informazioni di identificazione personale (PII) o altre informazioni riservate o sensibili nei nomi utente dei broker. I nomi utente dei broker sono accessibili ad altri AWS servizi, inclusi i registri. CloudWatch I nomi utenti dei broker non sono destinati ad essere utilizzati per dati privati o sensibili.
-
-
Seleziona Deploy (Implementa).
Mentre Amazon MQ crea il broker, mostra lo stato Creation in progress (Creazione in corso).
Per creare lil broker sono necessari circa 15 minuti.
Quando il broker viene creato correttamente, Amazon MQ mostra lo stato Running (In esecuzione).
-
Scegliere
MyBroker
.Sul
MyBroker
pagina, nella sezione Connect, annota la URL console web ActiveMQdel tuo broker, ad esempio: https://b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-east-2.amazonaws.com:8162
Inoltre, annotare gli endpoint del protocollo a livello di collegamento
del broker. Di seguito è riportato un esempio di endpoint: OpenWire ssl://b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-east-2.amazonaws.com:61617
Fase 2: Connect un'applicazione Java al broker
Dopo aver creato un broker ActiveMQ di Amazon MQ, è possibile collegarvi l'applicazione. Gli esempi seguenti mostrano come utilizzare Java Message Service (JMS) per creare una connessione al broker, creare una coda e inviare un messaggio. Per un esempio Java completo e funzionante, consultare Working Java Example.
Puoi connetterti ai broker ActiveMQ utilizzando vari client ActiveMQ
Prerequisiti
Abilita VPC gli attributi
Nota
Non puoi disabilitare l'accessibilità pubblica per i tuoi broker Amazon MQ esistenti.
Per assicurarti che il tuo broker sia accessibile all'interno del tuo accountVPC, devi abilitare gli enableDnsSupport
VPC attributi enableDnsHostnames
and. Per ulteriori informazioni, consulta la sezione DNSSupport VPC nella tua Amazon VPC User Guide.
Abilitazione delle connessioni in entrata
Successivamente, utilizza le seguenti istruzioni per abilitare le connessioni in entrata per il tuo broker.
Accedere alla console Amazon MQ
. Dall'elenco dei broker, scegli il nome del tuo broker (ad esempio, MyBroker).
-
Sul
MyBroker
pagina, nella sezione Connessioni, annota gli indirizzi e le porte della console web del broker URL e dei protocolli a livello di cavo. -
Nella sezione Details (Dettagli), in Security and network (Sicurezza e rete), scegliere il nome del gruppo di sicurezza o .
Viene visualizzata la pagina Gruppi di sicurezza della EC2 Dashboard.
-
Scegli il tuo gruppo di sicurezza dall'elenco.
-
Nella parte inferiore della pagina scegli Inbound (In entrata), quindi scegli Edit (Modifica).
-
Nella finestra di dialogo Modifica regole in entrata, aggiungi una regola per ogni URL dispositivo che desideri rendere accessibile pubblicamente (l'esempio seguente mostra come eseguire questa operazione per una console web di broker).
-
Selezionare Add Rule (Aggiungi regola).
-
Per Tipo, seleziona Personalizzato. TCP
-
Per Port Range (Intervallo porte), digitare la porta della console Web (
8162
). -
Per Source (Origine), lasciare selezionato Custom (Personalizzato), quindi inserire l'indirizzo IP del sistema a cui desideri poter accedere alla console Web (ad esempio,
192.0.2.1
). -
Seleziona Salva.
Il broker può ora accettare connessioni in entrata.
-
Aggiunta di dipendenze Java
Aggiungere i pacchetti activemq-client.jar
e activemq-pool.jar
al percorso di classe Java. L'esempio seguente mostra queste dipendenze in un file pom.xml
di progetto Maven.
<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>
Per ulteriori informazioni su activemq-client.jar
, consultare Configurazione iniziale
Importante
Nel codice di esempio seguente, produttori e consumatori vengono eseguiti in un singolo thread. Per i sistemi di produzione (o per testare il failover delle istanze del broker), assicurarsi che i produttori e i consumatori vengano eseguiti su host o thread separati.
Creazione di un produttore del messaggio e invio di un messaggio
Successivamente, verifica che il broker sia in grado di ricevere un messaggio creando un produttore di messaggi e inviando un messaggio.
-
Crea un Connection Factory in JMS pool per il produttore di messaggi utilizzando l'endpoint del tuo broker e poi richiama il
createConnection
metodo contro il factory.Nota
Per un broker attivo/in standby, Amazon MQ fornisce due console Web ActiveMQURLs, ma solo una è attiva alla volta. URL Allo stesso modo, Amazon MQ fornisce due endpoint per ogni protocollo a livello di connessione, ma è attivo un solo endpoint per ogni coppia alla volta. I suffissi
-1
e-2
indicano una coppia ridondante. Per ulteriori informazioni, consulta Opzioni di implementazione per i broker Amazon MQ for ActiveMQ.Per gli endpoint del protocollo a livello di connessione, è possibile consentire all'applicazione di connettersi a entrambi gli endpoint utilizzando il trasporto di failover
. // 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();
Nota
I produttori di messaggi devono sempre utilizzare la classe
PooledConnectionFactory
. Per ulteriori informazioni, consulta Usa sempre il pooling delle connessioni. -
Creare una sessione, una coda denominata
MyQueue
e un produttore di messaggi.// 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);
-
Creare la stringa del messaggio
"Hello from Amazon MQ!"
e quindi inviare il messaggio.// 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.");
-
Eliminare il produttore.
producer.close(); producerSession.close(); producerConnection.close();
Creazione di un consumatore del messaggio e ricezione del messaggio
Dopo aver creato un produttore, crea un consumatore per verificare che possa ricevere il messaggio.
-
Crea un JMS Connection Factory per il produttore del messaggio utilizzando l'endpoint del tuo broker, quindi richiama il
createConnection
metodo contro la fabbrica.// 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();
Nota
I consumatori dei messaggi non dovrebbero mai utilizzare la classe
PooledConnectionFactory
. Per ulteriori informazioni, consulta Usa sempre il pooling delle connessioni. -
Creare una sessione, una coda denominata
MyQueue
e un consumatore di messaggi.// 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);
-
Iniziare ad attendere i messaggi quindi riceverlo non appena arriva.
// 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());
Nota
A differenza dei servizi di AWS messaggistica (come AmazonSQS), il consumatore è costantemente connesso al broker.
-
Chiudere il consumatore, la sessione e la connessione.
consumer.close(); consumerSession.close(); consumerConnection.close();
Fase 3: (Opzionale) Connect a una AWS Lambda funzione
AWS Lambda può connettersi e utilizzare i messaggi del tuo broker Amazon MQ. Quando si connette un broker a Lambda, si crea una mappatura delle origini degli eventi che legge i messaggi da una coda e richiama la funzione in modo sincrono. La mappatura dell'origine degli eventi che crei legge i messaggi del tuo broker in batch e li converte in un payload Lambda sotto forma di oggetto. JSON
Connessione del broker a una funzione Lambda
-
Aggiungi le seguenti autorizzazioni di IAM ruolo al tuo ruolo di esecuzione della funzione Lambda.
Nota
Senza le IAM autorizzazioni necessarie, la tua funzione non sarà in grado di leggere correttamente i record dalle risorse Amazon MQ.
-
(Opzionale) Se hai creato un broker senza accessibilità pubblica, devi effettuare una delle seguenti operazioni per consentire a Lambda di connettersi al broker:
-
Configura un NAT gateway per sottorete pubblica. Per ulteriori informazioni, consulta Accesso a Internet e ai servizi per le funzioni VPC connesse nella Guida per gli AWS Lambda sviluppatori.
-
Crea una connessione tra Amazon Virtual Private Cloud (AmazonVPC) e Lambda utilizzando un VPC endpoint. Il tuo Amazon VPC deve inoltre connettersi agli endpoint AWS Security Token Service (AWS STS) e Secrets Manager. Per ulteriori informazioni, consulta Configurazione degli VPC endpoint dell'interfaccia per Lambda nella Guida per gli sviluppatori.AWS Lambda
-
-
Configurare il broker come origine dell'evento per una funzione Lambda che utilizza la AWS Management Console. Puoi anche usare il comando.
create-event-source-mapping
AWS Command Line Interface -
Scrivere un codice per la funzione Lambda per elaborare i messaggi utilizzati dal broker. Il payload Lambda recuperato dalla mappatura dell'origine dell'evento dipende dal tipo di motore del broker. Di seguito è riportato un esempio di payload Lambda per una coda Amazon MQ per ActiveMQ.
Nota
Nell'esempio,
testQueue
corrisponde al nome della coda.{ "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-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-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 } ] } }
Per maggiori informazioni sulla connessione di Amazon MQ a Lambda, le opzioni supportate da Lambda per un'origine dell'evento Amazon MQ e gli errori di mappatura delle origini degli eventi, vedere Uso di Lambda con Amazon MQ nella AWS Lambda Guida per gli sviluppatori.