连接到 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 选择器
一般来说,应避免让使用者路由消息,这样做的原因是,为了实现使用者和创建者的最佳解耦,使用者和创建者均应是短暂存在的。
首选虚拟目标而非持久订阅
持久订阅
如果使用 Amazon VPC 对等连接,请避免 CIDR 范围 10.0.0.0/16
内的客户端 IP
如果您要在本地部署基础设施和 Amazon MQ 代理之间设置 Amazon VPC 对等连接,则不得使用 CIDR 范围 10.0.0.0/16
内的 IP 配置客户端连接。