Guida introduttiva: creazione e connessione a un broker ActiveMQ - Amazon MQ

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.

  1. Accedere alla console Amazon MQ.

  2. Alla pagina Select broker engine (Seleziona motore del broker), scegliere Apache ActiveMQ.

  3. 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:

    1. 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.

    2. 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.

    3. Scegli Next (Successivo).

  4. Alla pagina Configure settings (Configura impostazioni), nella sezione Details (Dettagli), procedere come segue:

    1. 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.

    2. Selezionare il tipo di istanza del broker (ad esempio, mq.m5.large). Per ulteriori informazioni, consulta Broker instance types.

  5. 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.

  6. 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).

  7. Scegliere MyBroker.

    Sul MyBrokerpagina, nella sezione Connect, annota la URL console web ActiveMQ del 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. È consigliato l'uso del 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.

  1. Accedere alla console Amazon MQ.

  2. Dall'elenco dei broker, scegli il nome del tuo broker (ad esempio, MyBroker).

  3. Sul MyBrokerpagina, nella sezione Connessioni, annota gli indirizzi e le porte della console web del broker URL e dei protocolli a livello di cavo.

  4. 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.

  5. Scegli il tuo gruppo di sicurezza dall'elenco.

  6. Nella parte inferiore della pagina scegli Inbound (In entrata), quindi scegli Edit (Modifica).

  7. 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).

    1. Selezionare Add Rule (Aggiungi regola).

    2. Per Tipo, seleziona Personalizzato. TCP

    3. Per Port Range (Intervallo porte), digitare la porta della console Web (8162).

    4. 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).

    5. 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 nella documentazione di Apache ActiveMQ.

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.

  1. 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.

  2. 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);
  3. 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.");
  4. 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.

  1. 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.

  2. 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);
  3. 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.

  4. 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
  1. 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.

  2. (Opzionale) Se hai creato un broker senza accessibilità pubblica, devi effettuare una delle seguenti operazioni per consentire a Lambda di connettersi al broker:

  3. 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

  4. 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.