View a markdown version of this page

Amazon MQ for RabbitMQ 代理默认值 - Amazon MQ

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon MQ for RabbitMQ 代理默认值

当您为 RabbitMQ 代理创建 Amazon MQ 时,Amazon MQ 会应用一组默认的代理策略和虚拟主机限制来优化代理的性能。Amazon MQ 仅将虚拟主机限制应用于默认的(/)虚拟主机。Amazon MQ 不会将默认策略应用于新创建的虚拟主机。建议为所有新的和现有的代理保留这些默认值。但是,您可以随时修改、覆盖或删除这些默认设置。

亚马逊 MQ 为 RabbitMQ 3 和 RabbitMQ 4 的亚马逊 MQ 创建了不同的代理策略和虚拟主机限制。以下小节将详细讨论这些差异。

Amazon MQ 根据您在创建代理时选择的实例类型和代理部署模式创建策略和限制。默认策略根据部署模式命名,如下所示:

适用于 RabbitMQ 的亚马逊 MQ 3:

  • Single-instanceAWS-DEFAULT-POLICY-SINGLE-INSTANCE

  • 集群部署AWS-DEFAULT-POLICY-CLUSTER-MULTI-AZ && AWS-DEFAULT-QUORUM-QUEUES-POLICY-CLUSTER-MULTI-AZ

适用于 RabbitMQ 的亚马逊 MQ 4:

  • Single-instanceAWS-DEFAULT-POLICY-SINGLE-INSTANCE

  • 集群部署AWS-DEFAULT-POLICY-CLUSTER && AWS-DEFAULT-QUORUM-QUEUES-POLICY-CLUSTER-MULTI-AZ

对于单实例代理,Amazon MQ 会将策略优先级值设置为 0。要覆盖默认优先级值,可以创建具有较高优先级值的自定义策略。对于集群部署,Amazon MQ 将优先级值设置为代理默认值 1。要为集群创建您自己的自定义策略,请分配一个大于 1 的优先级值。

注意

在集群部署中,经典镜像和高可用性(HA)需要 ha-modeha-sync-mode 代理策略。这些设置仅适用于适用于 RabbitMQ 3 的亚马逊 MQ,不适用于 RabbitMQ 4 进行配置。

如果删除默认 AWS-DEFAULT-POLICY-CLUSTER-MULTI-AZ 策略,Amazon MQ 将使用 ha-all-AWS-OWNED-DO-NOT-DELETE 策略,优先级值为 0。这可以确保所需的 ha-modeha-sync-mode 策略仍然有效。如果您创建自己的自定义策略,Amazon MQ 自动将 ha-modeha-sync-mode 添加到您的策略定义。

策略和限制说明

以下列表描述了 Amazon MQ 应用于新创建的代理的默认策略和限制。max-lengthmax-queuesmax-connections 的值因代理的实例类型和部署模式而异。这些值列于建议的默认值部分。

RabbitMQ 3 和 RabbitMQ 4 经纪人的设置

  • queue-mode: lazy(策略)– 启用延迟队列。默认情况下,队列会在内存中保留消息缓存,从而使代理能够尽快将消息传递给使用者。这可能会导致代理内存不足并引发高内存警报。延迟队列尝试在可行的情况下尽早将消息移动到磁盘。这意味着在正常操作条件下保留在内存中的消息更少。使用延迟队列,Amazon MQ for RabbitMQ 可以支持更大的邮件负载和更长的队列。请注意,对于某些用例,具有延迟队列的代理可能会稍慢一些。这是因为消息从磁盘移动到代理,而不是从内存中的缓存传递消息。

    部署模式

    Single-instance,集群

  • max-length: number-of-messages(策略)– 设置队列中的消息数量的限制。在集群部署中,该限制可防止在代理重启或维护时段之后暂停队列同步。

    部署模式

    Cluster

  • overflow: reject-publish(策略)– 使用 max-length 策略强制队列在队列中的消息数达到 max-length 值后拒绝新消息。为了确保队列处于溢出状态时消息不会丢失,向代理发布消息的客户端应用程序必须实施发布者确认。有关实施发布者确认的信息,请参阅 RabbitMQ 网站上的发布者确认

    部署模式

    Cluster

RabbitMQ 3 的特定设置

  • max-queues: number-of-queues-per-vhost(虚拟主机限制)– 设置代理中队列数的限制。与max-length策略定义类似,限制集群部署中的队列数量可防止在代理重新启动或维护时段后暂停队列同步。限制队列还可防止过多使用 CPU 来维护队列。

    部署模式

    Single-instance,集群

  • max-connections: number-of-connections-per-vhost(虚拟主机限制)-设置每个虚拟主机的客户端连接数限制。根据建议的值限制连接数可防止使用过多的代理内存,以免导致代理产生高内存警报和暂停操作。

    重要

    此 vhost 级别限制不会覆盖代理强制执行的每节点连接限制。每个节点的限制由代理的实例类型决定,无法更改。有关按实例类型划分的每个节点的限制,请参阅Amazon MQ for RabbitMQ 大小调整指南

    部署模式

    Single-instance,集群

建议的默认值

重要

max-queuesmax-connections并且仅适用于 RabbitMQ 3 的亚马逊 MQ。

注意

max-lengthmax-queue 默认限制将根据平均邮件大小 5KB 进行测试和评估。如果您的消息大于 5KB,则需要调整和减少 max-lengthmax-queue 限制。

下表列出了新创建的代理的默认限制值。Amazon MQ 根据代理的实例类型和部署模式应用这些值。

实例类型 Deployment mode (部署模式) max-length max-queues max-connections
mq.m7g.medium Single-instance N/A 2,500 100
Cluster 500,000 100 100
mq.m7g.large Single-instance N/A 20000 5000
Cluster 80000,000 10000 5000
mq.m7g.xlarge Single-instance N/A 30000 10000
Cluster 90000,000 15000 10000
mq.m7g.2xlarge Single-instance N/A 40000 20000
Cluster 10,000,000 40000 20000
mq.m7g.4xlarge Single-instance N/A 60000 40000
Cluster 12,000,000 30000 40000
mq.m7g.8xlarge Single-instance N/A 80,000 80,000
Cluster 20,000,000 40000 80,000
mq.m7g.12xlarge Single-instance N/A 100000 120,000
Cluster 30,000,000 20000 120,000
mq.m7g.16xlarge Single-instance N/A 120,000 160000
Cluster 40,000,000 50000 160000
实例类型 Deployment mode (部署模式) max-length max-queues max-connections
t3.micro Single-instance N/A 500 500
m5.large Single-instance N/A 20000 4,000
m5.large Cluster 80000,000 10000 15000
m5.xlarge Single-instance N/A 30000 8000
m5.xlarge Cluster 90000,000 10000 20000
m5.2xlarge Single-instance N/A 60000 15000
m5.2xlarge Cluster 10,000,000 10000 40000
m5.4xlarge Single-instance N/A 15万 30000
m5.4xlarge Cluster 12,000,000 10000 100000