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
MyBrokerpá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 painel do EC2 é 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
createConnectioncontra 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
-1e-2denotam um par redundante. Para obter mais informações, consulte Opções de implantação de agentes do Amazon MQ para ActiveMQ).Para endpoints de protocolo no nível da conexão, você pode permitir que sua aplicação se conecte a qualquer endpoint usando o Transporte de 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
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
MyQueuee 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
createConnectioncontra 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
MyQueuee 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();