队列(Queue)用于存储消息,每个消息都会被投入到一个或多个 Queue 里,Producer 生产消息并最终投递到 Queue 中,Consumer 可以从 Queue 中拉取消息进行消费。
多个 Consumer 可以订阅同一个 Queue,这时 Queue 中的消息会被平均分摊给多个 Consumer 进行处理,而不是每个 Consumer 都收到所有的消息并处理。
普通队列(Classic Queue):采用轻量级索引与共享存储架构,在单机性能与存储效率间取得平衡,适用于高吞吐非强一致性场景。
仲裁队列(Quorum Queue):基于 Raft 协议实现多副本强一致性,保障关键业务数据不丢失,适用于金融交易、订单管理等关键业务。
约束与限制
限制类型 | 开源托管版 | Serverless 版 |
数量 | 一个 Vhost 下最多支持创建 1000个 Queue。 | 一个 Vhost 下最多支持创建 100个 Queue。 |
默认 Queue | Vhost 创建后会创建一个名为 tdmq_event_handle 的默认 Queue,用于事件查询功能,不支持编辑或者被删除,也不支持新增绑定关系,默认与名为 amq.rabbitmq.event 的默认 Exchange 绑定。 | 无默认 Queue。 |
控制台支持创建的队列类型 | 支持创建普通队列或 Quorum 队列。 | 仅支持创建普通队列。 |
前提条件
操作步骤
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 个字符。 |