连接到 Amazon MQ - Amazon MQ
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

连接到 Amazon MQ

以下设计模式可以提高您的应用程序连接到 Amazon MQ 代理的有效性。

永远不要修改或删除 Amazon MQ 弹性网络接口

在您首次创建 Amazon MQ 代理时,Amazon MQ 会在您账户下的 Virtual Private Cloud(VPC) 中预置弹性网络接口,因此需要大量 EC2 权限。该网络接口允许您的客户端(创建者或使用者)与 Amazon MQ 代理通信。该网络接口被视为在 Amazon MQ 的服务范围内,尽管是您的账户的 VPC 的一部分。

警告

您不得修改或删除此网络接口。修改或删除网络接口可能会导致永久丢失您的 VPC 和代理之间的连接。

始终使用连接池

在使用单个创建者和单个使用者的方案(例如 Getting Started with Amazon MQ 教程),您可以将单个 ActiveMQConnectionFactory 类用于每个创建者和使用者。例如:

// Create a connection factory. final ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(wireLevelEndpoint); // Pass the username and password. connectionFactory.setUserName(activeMqUsername); connectionFactory.setPassword(activeMqPassword); // Establish a connection for the consumer. final Connection consumerConnection = connectionFactory.createConnection(); consumerConnection.start();

但是,在具有多个创建者和使用者的更真实的方案中,为多个创建者创建大量连接可能成本高昂,并且效率低下。在这些方案中,您应使用 PooledConnectionFactory 类将多个创建者请求分组。例如:

注意

消息使用者绝不 应使用 PooledConnectionFactory 类。

// Create a connection factory. final ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(wireLevelEndpoint); // Pass the username and password. 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();

始终使用故障转移传输连接到多个代理终端节点

如果应用程序需要连接到多个代理终端节点,例如,当您使用主/备用部署模式或者从本地消息代理迁移到 Amazon MQ 时,使用故障转移传输以允许您的使用者随机连接到一个。例如:

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

避免使用消息选择器

可以使用 JMS 选择器将筛选器附加到主题订阅(以将消息基于其内容路由到使用者)。但是,JMS 选择器的使用将会填满 Amazon MQ 代理的筛选器缓冲区,从而阻止其筛选消息。

一般来说,应避免让使用者路由消息,这样做的原因是,为了实现使用者和创建者的最佳解耦,使用者和创建者均应是短暂存在的。

首选虚拟目标而非持久订阅

持久订阅可帮助确保使用者收到发布到主题的所有消息,例如,在恢复丢失的连接后。但是,使用持久订阅还阻止竞争性使用者使用并可能具有大规模性能问题。考虑改用虚拟目标

如果使用 Amazon VPC 对等连接,请避免 CIDR 范围 10.0.0.0/16 内的客户端 IP

如果您要在本地部署基础设施和 Amazon MQ 代理之间设置 Amazon VPC 对等连接,则不得使用 CIDR 范围 10.0.0.0/16 内的 IP 配置客户端连接。