Começando: Criando e conectando-se a um corretor ActiveMQ - 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á.

Começando: Criando e conectando-se a um corretor ActiveMQ

Um agente é um ambiente de agente de mensagens em execução no Amazon MQ. É o bloco de criação básico do Amazon MQ. A descrição combinada da classe (m5, t3) e do tamanho (large, micro) da instância do agente é um Tipo de instância de agente (por exemplo, mq.m5.large). Para obter mais informações, consulte O que é um corretor Amazon MQ for ActiveMQ?.

Etapa 1: Criar um corretor ActiveMQ

A tarefa inicial e mais comum do Amazon MQ é a criação de um agente. O exemplo a seguir mostra como você pode usar o AWS Management Console para criar um corretor básico.

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

  2. Na página Select broker engine (Selecionar mecanismo de agente), selecione Apache ActiveMQ (Apache ActiveMQ).

  3. Na página Select deployment and storage (Selecionar implantação e armazenamento), na seção Deployment mode and storage type (Modo de implantação e tipo de armazenamento), faça o seguinte:

    1. Selecione o Deployment mode (Modo de implantação) (por exemplo:Agente ativo/em espera). Para obter mais informações, consulte Opções de implantação do Amazon MQ para agentes ActiveMQ.

      • Um agente de instância única é composto por um agente em uma Zona de disponibilidade. O corretor se comunica com seu aplicativo e com um volume de EFS armazenamento da Amazon EBS ou da Amazon. Para obter mais informações, consulte Opção 1: corretores de instância única do Amazon MQ.

      • Um agente ativo/em espera de alta disponibilidade é composto por dois agentes em duas zonas de disponibilidade diferentes, configuradas em um par redundante. Esses corretores se comunicam de forma síncrona com seu aplicativo e com a Amazon. EFS Para obter mais informações, consulte Opção 2: corretores ativos/em espera do Amazon MQ para alta disponibilidade.

      • Para obter mais informações sobre os esquemas de amostra de uma rede de agentes, consulte Esquemas de exemplo.

    2. Escolha o tipo de armazenamento (por exemplo, EBS). Para obter mais informações, consulte Storage.

      nota

      A Amazon EBS replica dados dentro de uma única zona de disponibilidade e não suporta o modo de implantação ativo/em espera do ActiveMQ.

    3. Escolha Próximo.

  4. Na página Definir configurações, faça o seguinte na seção Detalhes:

    1. Digite o Broker name (Nome do agente).

      Importante

      Não adicione informações de identificação pessoal (PII) ou outras informações confidenciais ou sigilosas nos nomes dos corretores. Os nomes dos corretores podem ser acessados por outros AWS serviços, incluindo CloudWatch registros. Nomes de agente não devem ser usados para dados privados ou sigilosos.

    2. Selecione o Tipo de instância de agente (por exemplo, m5.large). Para obter mais informações, consulte Broker instance types.

  5. Na seção ActiveMQ Web Console access (Acesso ao console da Web ActiveMQ), forneça um Username (Nome de usuário) e Password (Senha). As seguintes restrições se aplicam a nomes de usuário e senhas de agente:

    • Seu nome de usuário pode conter somente caracteres alfanuméricos, traços, pontos, sublinhados e tils (- . _ ~).

    • Sua senha deve ter pelo menos 12 caracteres, deve conter pelo menos 4 caracteres exclusivos e não deve conter vírgulas, dois pontos ou sinais de igual (,:=).

    Importante

    Não adicione informações de identificação pessoal (PII) ou outras informações confidenciais ou sigilosas nos nomes de usuário da corretora. Os nomes de usuário dos corretores podem ser acessados por outros AWS serviços, incluindo CloudWatch registros. Nomes de usuário do agente não devem ser usados para dados privados ou sigilosos.

  6. Escolha Implantar.

    Enquanto o Amazon MQ cria seu agente, ele exibe o status Criação em andamento.

    A criação do agente leva cerca de 15 minutos.

    Quando o seu agente é criado com sucesso, o Amazon MQ exibe o status Running (Em execução).

  7. Escolha MyBroker.

    Sobre o MyBrokerpágina, na seção Connect, anote o URL console web ActiveMQ do seu corretor, por exemplo:

    https://b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-east-2.amazonaws.com:8162

    Além disso, observe os Endpoints de protocolo de nível de conexão do seu agente. Veja a seguir um exemplo de um OpenWire endpoint:

    ssl://b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-east-2.amazonaws.com:61617

Etapa 2: Conectar um aplicativo Java ao seu corretor

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

nota

Não é possível desativar a acessibilidade pública para os agentes do Amazon MQ existentes.

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, use as instruções a seguir para habilitar conexões de entrada para seu corretor.

  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 .

    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.

Criar um produtor de mensagem e enviar uma mensagem

Em seguida, verifique se seu corretor pode receber uma mensagem criando um produtor de mensagens e enviando 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();

Criar um consumidor de mensagem e receber a mensagem

Depois de criar um produtor, crie um consumidor para verificar se ele pode receber a 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();

Etapa 3: (opcional) conectar-se a uma AWS Lambda função

AWS Lambda pode se conectar e consumir mensagens do seu agente Amazon MQ. Quando você conecta um agente ao Lambda, você cria um Mapeamento da origem do evento que lê mensagens de uma fila e invoca a função sincronicamente. O mapeamento da fonte de eventos que você cria lê mensagens do seu agente em lotes e as converte em uma carga Lambda na forma de um objeto. JSON

Para conectar seu agente a uma função do Lambda
  1. Adicione as seguintes permissões de IAM função à sua função de execução da função Lambda.

    nota

    Sem as IAM permissões necessárias, sua função não conseguirá ler com sucesso os registros dos recursos do Amazon MQ.

  2. (Opcional) Se você criou um agente sem acessibilidade pública, você deve fazer um dos seguintes procedimentos para permitir que o Lambda se conecte ao seu agente:

  3. Configure seu agente como uma origem do evento para uma função do Lambda usando AWS Management Console. Você também pode usar o create-event-source-mapping AWS Command Line Interface comando.

  4. Escreva algum código para sua função do Lambda para processar as mensagens consumidas pelo seu agente. A carga útil do Lambda recuperada pelo mapeamento da origem do evento depende do tipo de mecanismo do agente. Veja a seguir um exemplo de uma carga útil do Lambda para uma fila do Amazon MQ para ActiveMQ.

    nota

    No exemplo, testQueue é o nome da fila.

    { "eventSource": "aws:amq", "eventSourceArn": "arn:aws:mq:us-west-2:112556298976:broker:test:b-9bcfa592-423a-4942-879d-eb284b418fc8", "messages": { [ { "messageID": "ID:b-9bcfa592-423a-4942-879d-eb284b418fc8-1---mq---us-west-2.amazonaws.com.rproxy.goskope.com-37557-1234520418293-4:1:1:1:1", "messageType": "jms/text-message", "data": "QUJDOkFBQUE=", "connectionId": "myJMSCoID", "redelivered": false, "destination": { "physicalname": "testQueue" }, "timestamp": 1598827811958, "brokerInTime": 1598827811958, "brokerOutTime": 1598827811959 }, { "messageID": "ID:b-9bcfa592-423a-4942-879d-eb284b418fc8-1---mq---us-west-2.amazonaws.com.rproxy.goskope.com-37557-1234520418293-4:1:1:1:1", "messageType":"jms/bytes-message", "data": "3DTOOW7crj51prgVLQaGQ82S48k=", "connectionId": "myJMSCoID1", "persistent": false, "destination": { "physicalname": "testQueue" }, "timestamp": 1598827811958, "brokerInTime": 1598827811958, "brokerOutTime": 1598827811959 } ] } }

Para obter mais informações sobre como conectar o Amazon MQ ao Lambda, as opções com as que o Lambda é compatível para uma origem de evento do Amazon MQ e erros de mapeamento da origem do evento, consulte Usar o Lambda com o Amazon MQ no Guia do desenvolvedor AWS Lambda .