RabbitMQ Web 界面配置解析

2024年09月25日10 min read
RabbitMQ

Channels(通道)

1. Channel(通道名称)

  • 定义:用于标识特定的通道。
  • 用途:方便区分不同的通道,在代码中通过特定的通道名称进行操作。

2. User name(该通道登录使用的用户名)

  • 定义:显示建立该通道所使用的用户名。
  • 用途:有助于识别通道的创建者,进行访问控制和审计。

3. Model(通道确认模式)

  • “C” :表示 confirm(确认模式)。
  • “T” :表示事务transactional。
  • 用途:确定消息在发送和接收过程中的可靠性保障方式。Confirm 模式下,生产者可以通过确认机制确保消息成功发送到 RabbitMQ 服务器;事务模式提供了更严格的事务处理,但性能开销相对较大。

4. State(通道当前的状态)

  • “running”: 表示运行中
  • “idle”: 表示空闲。
  • 用途:让用户了解通道的当前工作状态。运行中的通道正在处理消息传递或其他操作,空闲状态可能表示当前没有活动的消息传递任务。

5. Unconfirmed(待确认的消息总数)

  • 定义:显示已经发送但尚未被确认的消息数量。
  • 用途:帮助监控消息的传递状态,确保消息被正确处理和确认。如果这个数字过高,可能表示存在消息处理延迟或问题。

6. Prefetch(每个消费者最大的能承受的未确认消息数目)

  • 定义:指定一个消费者一次可以从 RabbitMQ 中获取多少条消息并缓存在消费者中。一旦消费者的缓冲区满了,RabbitMQ 将会停止投递新的消息到该消费者中,直到它发出有消息被 ack(确认)了。
  • 用途:用于调整消费者的消息处理能力,平衡消息的投递速度和消费者的处理速度,避免消息堆积或消费者过载。

7. Unacker(待 ack 的消息总数)

  • 定义:显示消费者尚未确认的消息数量。
  • 用途:与 Unconfirmed 和 Prefetch 一起,用于监控消费者对消息的处理进度和状态。

8. publish(消息生产者发送消息的速率)

  • 定义:表示生产者发送消息的速度,通常以消息数量 / 时间单位来衡量。
  • 用途:帮助评估生产者的负载和消息产生的速度,以便调整系统资源或进行性能优化。

9. confirm(消息生产者确认消息的速率)

  • 定义:生产者确认消息的速度,同样以消息数量 / 时间单位来衡量。
  • 用途:反映生产者对消息确认的及时性,高确认速率可能表示系统运行良好,低确认速率可能暗示网络问题或其他故障。

10. unroutable (drop)(表示未被接收,且已经删除了的消息)

  • 定义:显示由于无法路由而被删除的消息数量。
  • 用途:用于监测消息路由过程中的问题,例如交换器或队列配置错误导致消息无法正确传递。

11. deliver/get(消息消费者获取消息的速率)

  • 定义:表示消费者获取消息的速度。
  • 用途:评估消费者的消息接收能力,与生产者的发送速率相结合,以确保系统的平衡和高效运行。

12. ack(消息消费者 ack 消息的速率)

  • 定义:消费者确认消息的速度。
  • 用途:反映消费者对消息处理的及时性和可靠性,高确认速率有助于确保消息被正确处理并释放系统资源。

Exchanges(交换器)配置

Name(名称)

  • 定义:为交换器指定一个唯一的名称。
  • 用途:在生产者和消费者的代码中引用该交换器,以便将消息路由到正确的目的地。

Type(类型)

  • 常见类型及含义: direct:直连交换器,根据消息的路由键将消息路由到与该路由键完全匹配的队列。 topic:主题交换器,路由键可以包含通配符,根据路由键的模式匹配将消息路由到多个队列。 fanout:扇出交换器,将消息广播到所有绑定到该交换器的队列,不关心路由键。 headers:根据消息的头部属性进行路由,而不是路由键。
  • 用途:不同类型适用于不同的消息路由需求场景。

Durability(持久性)

  • 定义:如果设置为持久化,交换器在 RabbitMQ 服务器重启后仍然存在。
  • 用途:确保重要的交换器不会因为服务器故障而丢失,保证消息路由的稳定性。

Auto-delete(自动删除)

  • 定义:当最后一个绑定到该交换器的队列被解绑时,自动删除这个交换器。
  • 用途:适用于临时的或者自动清理不再使用的交换器,节省系统资源。

Internal(内部交换器)

  • 定义:内部交换器不能被客户端直接使用,只能用于在 RabbitMQ 内部进行消息路由。
  • 用途:通常用于特殊的架构设计或者内部系统集成。

Arguments(参数)

  • 定义:可以为交换器设置一些自定义的参数,具体含义取决于 RabbitMQ 的插件或者特定的使用场景。
  • 用途:提供扩展和定制交换器行为的方式。

Queues(队列)配置

Auto expire(自动过期时间)

  • 定义:指定队列在没有任何活动的情况下,经过设定的时间后自动被删除。
  • 用途:用于临时队列或自动清理不再使用的队列,节省系统资源。

Message TTL(消息生存时间)

  • 定义:设置单个消息在队列中的存活时间,超时后会被自动移除或发送到死信队列。
  • 用途:处理有时效性要求的消息。

Overflow behaviour(溢出行为)

  • 定义:决定当队列已满时,新进入的消息如何处理。
  • 取值及含义: Reject new publish:拒绝新消息的发布,发送者会收到错误响应。 Reject new publish/dlx:拒绝新消息的发布,并将其发送到死信交换器(如果配置了死信交换器)。 Drop oldest/newest publish:丢弃最早或最新的消息,以腾出空间给新消息。

Single active consumer(单个活动消费者)

  • 定义:队列只允许一个消费者处于活动状态并接收消息。
  • 用途:确保消息按特定顺序被单个消费者处理,避免多个消费者同时处理可能导致的冲突。

Dead letter exchange(死信交换器)

  • 定义:当消息满足特定条件时,会被发送到这个指定的交换器。
  • 用途:处理无法正常处理的消息,进行重试、记录错误等后续处理操作。

Dead letter routing key(死信路由键)

  • 定义:与死信交换器一起使用,确定消息被发送到死信交换器后的路由方式。

Max length(最大长度)

  • 定义:限制队列中可以存储的消息数量上限。
  • 用途:防止队列无限增长导致内存耗尽等问题。

Max length bytes(最大字节数)

  • 定义:限制队列中所有消息的总字节数上限。

Leader locator(领导者定位器)

  • 定义:在 RabbitMQ 的集群环境中,确定队列的领导者所在的节点。
  • 用途:帮助管理队列在集群中的分布和高可用性。