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à.
Connessione di un'applicazione Java alil broker Amazon MQ
Dopo aver creato un broker ActiveMQ di Amazon MQ, è possibile collegarvi l'applicazione. Di seguito sono riportati esempi che mostrano come è possibile utilizzare il servizio di messaggistica Java (JMS) per creare una connessione alil 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
Argomenti
Prerequisiti
Abilitazione attributi VPC
Per garantire che il broker sia accessibile all'interno del VPC, è necessario abilitare gli attributi VPC enableDnsHostnames
e enableDnsSupport
. Per ulteriori informazioni, consultare Supporto del DNS nel VPC nella Guida per l'utente di Amazon VPC.
Abilitazione connessioni in entrata
Accedere alla console Amazon MQ
. Dall'elenco dei broker, scegli il nome del tuo broker (ad esempio, MyBroker).
-
Nella
MyBroker
pagina, nella sezione Connessioni, annota gli indirizzi e le porte dell'URL della console web del broker 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 Security Groups (Gruppi di sicurezza) del pannello di controllo EC2.
-
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 Edit inbound rules (Modifica le regole in entrata), aggiungere una regola per ogni URL o endpoint che si desidera rendere accessibile pubblicamente (nell'esempio seguente viene illustrato come eseguire questa operazione per una console Web del broker).
-
Selezionare Add Rule (Aggiungi regola).
-
Per Type (Tipo) seleziona Custom TCP (TCP personalizzato).
-
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
). -
Selezionare Salva.
Il broker può ora accettare connessioni in entrata.
-
Aggiunta 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.
Per creare un produttore del messaggio e inviare un messaggio
-
Creare un pool di connessioni di stabilimento JMS per il produttore di messaggi utilizzando l'endpoint del broker e quindi chiamare il metodo
createConnection
rispetto allo stabilimento.Nota
Per un broker attivo/in standby, Amazon MQ fornisce due URL della console Web ActiveMQ, ma è attivo un solo URL alla volta. 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 Broker Architecture.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();
Per creare un consumatore del messaggio e ricevere il messaggio
-
Creare una connessione di stabilimento JMS per il produttore di messaggi utilizzando l'endpoint del broker e quindi chiamare il metodo
createConnection
rispetto allo stabilimento.// 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 Amazon SQS), il consumatore è costantemente connesso al broker.
-
Chiudere il consumatore, la sessione e la connessione.
consumer.close(); consumerSession.close(); consumerConnection.close();