Conectando ao 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á.

Conectando ao Amazon MQ

Os padrões de design a seguir podem melhorar a eficiência da conexão da sua aplicação ao agente do Amazon MQ.

Nunca modifique ou exclua a interface de rede elástica do Amazon MQ

Quando você cria um agente do Amazon MQ pela primeira vez, o Amazon MQ provisiona uma interface de rede elástica na Virtual Private Cloud (VPC) em sua conta e, por isso, requer uma série de permissões do EC2. A interface de rede permite que seu cliente (produtor ou consumidor) se comunique com o agente do Amazon MQ. Considera-se que a interface de rede está dentro do escopo de serviço do Amazon MQ, apesar de fazer parte da VPC de sua conta.

Atenção

Você não deve modificar ou excluir essa interface de rede. Modificar ou excluir a interface de rede pode causar uma perda permanente de conexão entre a VPC e o operador.

Diagram showing client connection to Amazon MQ broker via Elastic Network Interface within customer VPC. (AI generated)

Sempre usar pooling de conexão

Em um cenário com um único produtor e um único consumidor (como o Getting Started with Amazon MQ tutorial), você pode usar uma única ActiveMQConnectionFactory classe para cada produtor e consumidor. Por exemplo:

// 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();

No entanto, em cenários mais realistas com vários produtores e consumidores, pode ser dispendioso e ineficiente criar um grande número de conexões para vários produtores. Nesses cenários, você deve agrupar solicitações de vários produtores usando a classe PooledConnectionFactory. Por exemplo:

nota

Os consumidores de mensagens nunca devem usar a classe PooledConnectionFactory.

// 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();

Sempre usar o transporte de failover para conectar-se a vários endpoints de operador

Se você precisar que a aplicação se conecte a vários endpoints do agente — por exemplo, ao usar um modo de implantação ativo/em espera ou ao migrar de um agente de mensagens no local para o Amazon MQ — use o transporte de failover para permitir que os consumidores se conectem aleatoriamente a um deles. Por exemplo:

failover:(ssl://b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-east-2.amazonaws.com:61617,ssl://b-9876l5k4-32ji-109h-8gfe-7d65c4b132a1-2.mq.us-east-2.amazonaws.com:61617)?randomize=true

Evite usar seletores de mensagens

É possível usar seletores JMS para anexar filtros às assinaturas de tópico (para rotear mensagens a consumidores com base no conteúdo). No entanto, o uso de seletores JMS ocupa o buffer do filtro do agente do Amazon MQ, impedindo a filtragem de mensagens.

Em geral, evite permitir que os consumidores roteiem mensagens, pois, para um bom desacoplamento de consumidores e produtores, ambos devem ser temporários.

Preferir destinos virtuais a assinaturas duráveis

Uma assinatura durável pode ajudar a garantir que o consumidor receba todas as mensagens publicadas em um tópico, por exemplo, após a restauração de uma conexão perdida. No entanto, o uso de assinaturas duráveis também impede o uso de consumidores da concorrência e pode apresentar problemas de performance em escala. Considere o uso de destinos virtuais, em vez disso.

Se estiver usando o emparelhamento da Amazon VPC, evite IPs de cliente no intervalo CIDR 10.0.0.0/16

Se você estiver configurando o emparelhamento da Amazon VPC entre a infraestrutura on-premises e o agente do Amazon MQ, não deverá configurar conexões de cliente com IPs no intervalo CIDR 10.0.0.0/16.