请说明在 RabbitMQ 中创建一个队列需要调用哪个方法,并解释该方法必须携带的核心参数各自的作用。
考察说明
考查对 RabbitMQ 队列声明 API 及关键参数的理解。
回答思路
- 【回答框架 1】在 RabbitMQ 中,声明队列通常使用 channel.queueDeclare 方法,通过 AMQP 协议向 Broker 注册或确认一个队列的存在。
- 【回答框架 2】必要参数包括队列名称 queue、是否持久化 durable、是否排他 exclusive、是否自动删除 autoDelete,以及额外的参数 arguments。durable 为 true 时队列元数据会持久化到磁盘,Broker 重启后队列仍存在;exclusive 为 true 时队列仅对当前连接可见,连接关闭后自动删除;autoDelete 为 true 时在最后一个消费者取消订阅后自动删除队列。
- 【回答框架 3】arguments 可传递队列的扩展属性,如消息 TTL、死信交换机等。声明时若队列已存在且参数不一致,会抛出异常,因此需保证参数一致。
- 【关键点 1】queueDeclare 是声明队列的核心方法。
- 【关键点 2】durable 决定队列是否持久化,exclusive 决定是否独占连接,autoDelete 决定消费者断开后是否自动删除。
- 【关键点 3】arguments 用于设置队列的扩展策略,如死信和 TTL。
- 【关键点 4】声明已存在且参数不匹配的队列会报错。
- 【易错点 1】仅设置 durable 并不保证消息持久化,消息还需设置持久化属性。
- 【易错点 2】exclusive 队列是连接级别的,不可跨连接访问。