本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
适用于 RabbitMQ 的 Amazon MQ 中代理设置和连接管理的最佳实践
代理设置和连接管理是防止代理消息吞吐量、资源利用率和处理生产工作负载能力出现问题的第一步。在创建和配置 Amazon MQ for RabbitMQ 代理时,请完成以下最佳实践,以选择适当的实例类型、高效管理连接和配置消息预取以最大限度地提高代理性能。
重要
Amazon MQ for RabbitMQ 不支持用户名“guest”,并会在您创建新代理时删除默认的访客账户。Amazon MQ 还将定期删除任何由客户创建的名为“guest”的账户。
步骤 1:使用集群部署
对于生产工作负载,我们建议使用集群部署而不是单实例代理,以确保高可用性和消息弹性。集群部署可消除单点故障,并提供更好的容错能力。
集群部署由分布在三个可用区的三个 RabbitMQ 代理节点组成,可提供自动故障转移并确保即使整个可用区不可用,操作也能继续进行。Amazon MQ 会自动在所有节点上复制消息,以确保节点故障或维护期间的可用性。
集群部署对于生产环境至关重要,并受到 Amazon MQ 服务等级
有关更多信息,请参阅在 Amazon MQ 中部署适用于 RabbitMQ 的集群。
第 2 步:选择正确的代理实例类型
代理实例类型的消息吞吐量取决于您的应用程序用例。 M7g.medium
应仅用于测试应用程序性能。在生产环境中使用较大的实例之前使用这个较小的实例可以提高应用程序性能。在实例类型 m7g.large
及更大实例上,您可以使用集群部署来实现高可用性和消息持久性。较大的代理实例类型可以处理生产级别的客户端和队列、高吞吐量、内存中的消息和冗余消息。
有关选择正确实例类型的更多信息,请参阅 Amazon MQ for RabbitMQ 中的大小调整指南。
步骤 3:使用法定队列
对于在 3.13 及更高版本中,RabbitMQ 代理在生产环境中复制队列类型的默认选择应该是集群部署的法定队列。法定队列是一种现代的复制队列类型,可提供高可靠性、高吞吐量和稳定的延迟。
法定队列使用 Raft 共识算法来提供更好的容错能力。当领导者节点不可用时,法定人数队列会自动通过多数票选出新的领导者,从而确保消息传递继续进行,干扰最小。由于每个节点位于不同的可用区,因此即使整个可用区暂时不可用,您的消息系统仍可用。
要声明法定队列,请在创建队列quorum
时x-queue-type
将标题设置为。
有关法定人数队列的更多信息,包括迁移策略和最佳实践,请参阅 Amazon MQ for RabbitMQ 中的法定人数队列。
第 4 步:使用多个频道
为避免连接中断,请在单个连接上使用多个通道。应用程序应避免 1:1 的连接与通道比率。我们建议每个进程使用一个连接,然后为每个线程使用一个通道。避免过度使用通道,以防通道泄漏。