多个 Consumer 可以订阅同一个 Queue,这时 Queue 中的消息会被平均分摊给多个 Consumer 进行处理,而不是每个 Consumer 都收到所有的消息并处理。
TDMQ RabbitMQ 版支持在控制台上创建普通队列或 Quorum 队列,这里说明创建普通队列的操作步骤,创建 Quorum 队列的操作步骤请参考配置仲裁队列。
·普通队列(Classic Queue):采用轻量级索引与共享存储架构,在单机性能与存储效率间取得平衡,适用于高吞吐非强一致性场景。
·仲裁队列(Quorum Queue):基于 Raft 协议实现多副本强一致性,保障关键业务数据不丢失,适用于金融交易、订单管理等关键业务。
一、约束与限制
| 限制类型 | 开源托管版 | Serverless 版 |
| 数量 | 一个 Vhost 下最多支持创建 1000个 Queue。 | 一个 Vhost 下最多支持创建 100个 Queue。 |
| 默认 Queue | Vhost 创建后会创建一个名为 tdmq_event_handle 的默认 Queue,用于事件查询功能,不支持编辑或者被删除,也不支持新增绑定关系,默认与名为 amq.rabbitmq.event 的默认 Exchange 绑定。 | 无默认 Queue。 |
| 控制台支持创建的队列类型 | 支持创建普通队列或 Quorum 队列。 | 仅支持创建普通队列。 |
二、前提条件
已创建好对应的 Vhost,具体操作步骤请参考 创建 Vhost。
三、操作步骤
开源托管版Serverless 版
1. 登录 TDMQ RabbitMQ 版控制台。
2. 在左侧导航栏选择集群管理 > Queue,选择 Vhost 后,单击新建进入创建 Queue 页面。
3. 根据页面提示完成 Queue 信息设置后,单击提交,完成 Queue 创建。
| 分类 | 参数 | 是否必选 | 说明 |
| 基本信息 | 当前 Vhost | 是 | 表示正在给哪个 Vhost 创建 Queue。 |
| | Queue 名称 | 是 | 填写 Queue 名称,需符合命名规则:1-64个字符,只能包含字母、数字、“-”及“_”。Queue 创建成功后,不支持修改名称。 |
| | 类型 | 是 | 选择普通队列。 |
| | Durable | 否 | 设置 Queue 是否执行持久化,默认开启。如果设置为 true,该 Queue 在服务重启后仍然存在。如果设置为 false,该 Queue 在服务重启后会被删除,需要重建。 |
| | 节点 | 是 | 在下拉框中选择 Queue 所在的集群节点。 |
| | AutoDelete | 否 | 是否开启自动删除 Queue,默认关闭。如果设置为 true,当订阅该 Queue 消息的最后一个消费者取消订阅后,该 Queue 将被自动删除。如果设置为 false,当订阅该 Queue 消息的最后一个消费者取消订阅后,不会删除该 Queue。 |
| | Queue 说明 | 否 | 填写 Queue 的说明信息,最多128个字符。 |
| 常用参数 | Message TTL | 否 | 消息在 Queue 中的存活时间,单位为 ms。若超过 TTL 后,消息还未被成功消费,则:如果指定了死信 Exchange,消息会被发送到死信 Exchange。如果没有指定死信 Exchange,消息就会被丢弃。 |
| | Auto Expire | 否 | Queue 的空闲存活时间,当 Queue 在指定时间内没有消费者连接、没有消息被消费或发布,会被自动删除。 |
| | Max Length | 否 | Queue 可以容纳的消息数量上限,超过设定值后将触发 Overflow behaviour 溢出策略。 |
| | Max Length Bytes | 否 | Queue 的存储容量上限,超过设定值后将触发 Overflow behaviour 溢出策略。 |
| | Overflow Behaviour | 否 | 当 Queue 容量达到上限时,队列的消息处理策略:drop-head:当队列达到容量上限时,丢弃队列头部的消息。reject-publish:当队列达到容量上限时,拒绝新消息的发布,并将发布操作标记为失败。reject-publish-dlx:当队列达到容量上限时,拒绝新消息的发布,并将消息发送到死信交换机(Dead Letter Exchange,DLX),若未配置死信 Exchange,将自动指定名为 AMQP default exchange 的默认 Exchange。 |
| | 死信 Exchange | 是 | 消息超过 TTL 时间没有被成功消费,将被投递到死信 Exchange,默认指定名为 AMQP default exchange 的默认 Exchange。 |
| 其他高级选项 | Single Active Consumer | 否 | 是否开启单一活跃消费者,默认关闭。若设置为 true,Queue 同一时间只允许一个消费者消费消息,其他消费者会处于待命状态,当活跃消费者断开后,会自动选择下一个消费者。适用于顺序敏感型任务,如订单状态变更等场景。 |
| | Maximum Priority | 否 | 配置该队列中的消息的最大优先级,可选范围:[0,255],值越大,排序开销越高。配置该参数后将启用优先级功能,生产者发送消息时通过 priority 属性指定优先级(0到 Maximum Priority 之间)。高优先级消息会优先被消费,未设置优先级的消息默认为 0。适用于 VIP 客户订单优先处理、紧急任务插队等场景。 |
| | Lazy Mode | 否 | 是否开启惰性模式,默认关闭。若设置为 true,队列会优先将推送过来的消息保存在磁盘上以减少内存占用,消费时才加载到内存。适用于消息积压严重的队列,如死信队列。若设置为 false,消息默认存储在内存中。 |
| | Master Locator | 否 | 当配置了镜像队列时,master 所在节点的分配方式。min-masters(默认):当配置了镜像队列时,选择托管队列 master 数量最少的节点,作为当前队列的 master 所在的节点。生产环境建议保持默认 min-masters 以实现负载均衡。client-local:当配置了镜像队列时,选择声明队列的客户端所连接到的节点,作为当前队列的 master 所在的节点。random:当配置了镜像队列时,选择一个随机节点作为当前队列的 master 所在的节点。 |
1. 登录 TDMQ RabbitMQ 版控制台。
2. 在左侧导航栏选择集群管理 > Queue,选择 Vhost 后,单击新建进入创建 Queue 页面。
3. 填写 Queue 基本信息后,单击提交,完成 Queue 创建。
| 参数 | 是否必选 | 说明 |
| 当前 Vhost | 是 | 表示正在给哪个 Vhost 创建 Queue。 |
| Queue 名称 | 是 | 填写 Queue 名称,需符合命名规则:1-64个字符,只能包含字母、数字、“-”及“_”。Queue 创建成功后,不支持修改名称。 |
| 类型 | 是 | 仅支持普通队列。 |
| Message TTL | 否 | 消息在 Queue 中的存活时间,单位为 ms。若超过 TTL 后,消息还未被成功消费,则:如果指定了死信 Exchange,消息会被发送到死信 Exchange。如果没有指定死信 Exchange,消息就会被丢弃。 |
| 死信 Exchange | 否 | 消息超过 TTL 时间没有被成功消费,将被投递到死信 Exchange。 |
| Queue 说明 | 否 | 填写 Queue 说明信息,最多 128 个字符。 |