As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Conectar uma aplicação Java ao agente do Amazon MQ
Depois de criar um agente do Amazon MQ ActiveMQ, você pode conectar sua aplicação a ele. Os exemplos a seguir mostram como você pode usar o JMS (Java Message Service) para criar uma conexão com o agente, criar uma fila e enviar uma mensagem. Para obter um exemplo completo e funcional do Java, consulte Working Java Example.
Você pode se conectar a agentes do ActiveMQ usando vários clientes de ActiveMQ
Tópicos
Pré-requisitos
Habilitar atributos da VPC
Para garantir que seu agente esteja acessível dentro da sua VPC, você deve habilitar os atributos VPC enableDnsHostnames
e enableDnsSupport
. Para obter mais informações, consulte Compatibilidade com DNS para a sua VPC no Manual do usuário da Amazon VPC.
Habilitar conexões de entrada
Em seguida, habilite as conexões de entrada para sua aplicação.
Faça login no console do Amazon MQ
. Na lista de corretores, escolha o nome do seu corretor (por exemplo, MyBroker).
-
Na
MyBroker
página, na seção Conexões, observe os endereços e portas do URL do console web e dos protocolos de nível de fio do broker. -
Na seção Details (Detalhes), em Security and network (Segurança e rede), escolha o nome do seu grupo de segurança ou
.
A página Grupos de Segurança do EC2 Painel é exibida.
-
Na lista de security group, escolha seu security group.
-
Na parte inferior da página, escolha Inbound (Entrada) e a seguir selecione Edit (Editar).
-
Na caixa de diálogo Edit inbound rules (Editar regras de entrada), adicione uma regra para cada URL ou endpoint que você deseja que seja acessível publicamente (o exemplo a seguir mostra como fazer isso para um console da Web do agente).
-
Escolha Add Rule (Adicionar regra).
-
Em Type (Tipo), selecione Custom TCP (TCP personalizado).
-
Para o Intervalo de Portas, digite a porta do console da Web (
8162
). -
Para Source (Origem), deixe Custom (Personalizado) selecionado e, depois, digite o endereço IP do sistema ao qual deseja ser capaz de acessar o console da Web (por exemplo,
192.0.2.1
). -
Escolha Salvar.
Agora seu agente pode aceitar conexões de entrada.
-
Adicionar dependências de Java
Adicione os pacotes activemq-client.jar
e activemq-pool.jar
ao caminho da classe Java. O exemplo a seguir mostra essas dependências em um arquivo pom.xml
do projeto 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>
Para obter mais informações sobre activemq-client.jar
, consulte Initial Configuration
Importante
No código de exemplo a seguir, os produtores e consumidores são executados em um único thread. Para sistemas de produção (ou para testar o failover de instância do agente), certifique-se de que seus produtores e consumidores sejam executados em hosts ou threads separados.
Para criar um produtor de mensagens e enviar uma mensagem
Use a instrução a seguir para criar um produtor de mensagens e receber uma mensagem.
-
Crie uma fábrica de conexão em grupo JMS para o produtor da mensagem usando o endpoint do seu agente e, em seguida, chame o método
createConnection
contra a fábrica.nota
Para um active/standby corretor, o Amazon MQ fornece dois ActiveMQ Web Console URLs, mas somente um URL está ativo por vez. Da mesma forma, o Amazon MQ fornece dois endpoints para cada protocolo de nível de conexão, mas apenas um endpoint está ativo em cada par de cada vez. Os sufixos
-1
e-2
denotam um par redundante. Para obter mais informações, consulte Opções de implantação de agentes do Amazon MQ para ActiveMQ).// 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
Os produtores de mensagens devem sempre usar a classe
PooledConnectionFactory
. Para obter mais informações, consulte Sempre usar pooling de conexão. -
Crie uma sessão, uma fila chamada
MyQueue
e um produtor de mensagens.// 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);
-
Crie a string da mensagem
"Hello from Amazon MQ!"
e, em seguida, envie a mensagem.// 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.");
-
Limpe o produtor.
producer.close(); producerSession.close(); producerConnection.close();
Para criar um consumidor de mensagens e receber a mensagem
Use a instrução a seguir para criar um produtor de mensagens e receber uma mensagem.
-
Crie uma fábrica de conexão JMS para o produtor da mensagem usando o endpoint do seu agente e, em seguida, chame o método
createConnection
contra a fábrica.// 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
Os consumidores de mensagens nunca devem usar a classe
PooledConnectionFactory
. Para obter mais informações, consulte Sempre usar pooling de conexão. -
Crie uma sessão, uma fila chamada
MyQueue
e um consumidor de mensagens.// 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);
-
Comece a aguardar mensagens e receba a mensagem quando ela chegar.
// 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
Diferentemente dos serviços de AWS mensagens (como o Amazon SQS), o consumidor está constantemente conectado ao agente.
-
Feche o consumidor, a sessão e a conexão.
consumer.close(); consumerSession.close(); consumerConnection.close();