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 Java Message Service (JMS) para criar uma conexão com o broker, 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
Ativar VPC atributos
Para garantir que seu corretor esteja acessível dentro de vocêVPC, você deve habilitar os enableDnsSupport
VPC atributos enableDnsHostnames
e. Para obter mais informações, consulte DNSSupport VPC em seu Guia do VPC usuário da Amazon.
Habilitar conexões de entrada
Em seguida, habilite as conexões de entrada para seu aplicativo.
Faça login no console do Amazon MQ
. Na lista de corretores, escolha o nome do seu corretor (por exemplo, MyBroker).
-
Sobre o
MyBroker
página, na seção Conexões, anote os endereços e portas do console web URL 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 Editar regras de entrada, adicione uma regra para cada terminal URL ou endpoint que você deseja que seja acessível ao público (o exemplo a seguir mostra como fazer isso em um console web do broker).
-
Escolha Add Rule.
-
Em Tipo, selecione Personalizado TCP.
-
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 as instruções a seguir para criar um produtor de mensagens e receber uma mensagem.
-
Crie uma fábrica de conexões em JMS pool para o produtor de mensagens usando o endpoint do seu corretor e, em seguida, chame o
createConnection
método na fábrica.nota
Para um agente ativo/em espera, o Amazon MQ fornece dois ActiveMQ Web ConsoleURLs, mas somente um está ativo por vez. URL 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 do Amazon MQ para agentes ActiveMQ.Para endpoints de protocolo de nível de 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
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 as instruções a seguir para criar um produtor de mensagens e receber uma mensagem.
-
Crie uma fábrica de JMS conexões para o produtor de mensagens usando o endpoint do seu corretor e, em seguida, chame o
createConnection
método na 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
Ao contrário dos serviços de AWS mensagens (como a AmazonSQS), o consumidor está constantemente conectado à corretora.
-
Feche o consumidor, a sessão e a conexão.
consumer.close(); consumerSession.close(); consumerConnection.close();