Conectar uma aplicação Java ao agente do Amazon MQ - Amazon MQ

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. Recomendamos usar o Cliente ActiveMQ.

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.

  1. Faça login no console do Amazon MQ.

  2. Na lista de corretores, escolha o nome do seu corretor (por exemplo, MyBroker).

  3. Sobre o MyBrokerpá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.

  4. Na seção Details (Detalhes), em Security and network (Segurança e rede), escolha o nome do seu grupo de segurança ou Pencil icon indicating an edit or modification action. .

    A página Grupos de Segurança do EC2 Painel é exibida.

  5. Na lista de security group, escolha seu security group.

  6. Na parte inferior da página, escolha Inbound (Entrada) e a seguir selecione Edit (Editar).

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

    1. Escolha Add Rule.

    2. Em Tipo, selecione Personalizado TCP.

    3. Para o Intervalo de Portas, digite a porta do console da Web (8162).

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

    5. 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 (Configuração inicial) na documentação do Apache ActiveMQ.

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.

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

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

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

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

  4. Feche o consumidor, a sessão e a conexão.

    consumer.close(); consumerSession.close(); consumerConnection.close();