Binding-绑定

  • Exchange和Exchange、Queue之间的连接关系
  • Binding中可以包含RoutingKey或者参数

Queue-消息队列

  • 消息队列,实际存储消息数据
  • Durability:是否持久化。Durable:是;Transient:否;
  • Auto Delete:自动删除
    • yes:代表最后一个监听被移除后,该Queue会被自动删除

Message

消息

  • 服务器(RabbitMQ服务)和应用程序之间传送的数据;
  • 本质上就是一段数据,由Properties和Payload(Body)组成;Properties可以对消息进行修饰,如消息的优先级、传输格式(如JSON)、延迟等高级特性,Body则就是消息体内容;
  • 常用属性:delivery mode,headers(自定义属性);

其他属性

  • content_type:用于描述消息体的MIME类型,例如application/json表示消息体是JSON格式。
  • content_encoding:消息体的编码方式,例如gzip表示消息体经过gzip压缩。
  • priority:消息的优先级,RabbitMQ可以根据这个属性优先传递重要的消息。
  • correlation_id:用于将请求和响应关联起来,通常在RPC(远程过程调用)中使用。
  • reply_to:通常用于指定RPC响应的队列。
  • expiration: 消息的过期时间,如果设置了,消息在队列中存活的时间不会超过这个时间。
  • message_id:消息的唯一标识符,用于追踪和去重。
  • timestamp:消息的时间戳,表示消息被发送的时间。
  • type:消息的类型,可以用于过滤和特定的处理逻辑。
  • user_id:发送消息的用户的ID,用于验证和授权。
  • app_id:发送消息的应用的ID,用于区分不同的发送源。
  • cluster_id:
  • delivery_mode:指定消息的持久性。如果设置为2,则消息会被持久化到磁盘,保证即使RabbitMQ重启也不会丢失。
  • headers:自定义的键值对,可以用于传递额外的信息和控制消息的行为。

Message的状态

  • Ready:待消费的消费总数;
  • Unacked:待应答(分配)的消息总数;开始消费但还未ack的消息数量
  • Total:总数(Ready+Unacked);

Virtual host-虚拟主机

  • 虚拟地址,用于进行逻辑隔离,最上层的消息路由;
  • 一个Virtual Host里面可以有若干个Exchange和Queue;
  • 同一个Virtual Host中不能有相同名称的Exchange或Queue;

管理界面

image-20240114121344284

版本

image-20240114121442286
RabbitMQ的版本和使用的Erlang的版本

基本Tag页

image-20240114122019953

  • Overview:概览页面提供了关于 RabbitMQ 节点、队列和交换机等的统计信息。
  • Connections:连接页面提供了有关当前客户端连接的详细信息。
  • Channels:通道页面提供了有关当前打开通道的详细信息。
  • Exchanges:交换机页面提供了有关 RabbitMQ 服务器上已声明的交换机的详细信息。
  • Queues and Streams:队列和流页面提供了有关 RabbitMQ 服务器上已声明的队列和流的详细信息。
  • Admin:管理页面提供了一些高级管理功能,例如添加用户、设置权限和定义策略等。

节点描述信息

image-20240114133108374

  • Name:节点名称
  • File descriptors:文件描述符是操作系统用于跟踪打开的文件和套接字的一种机制。在RabbitMQ中,它显示了RabbitMQ进程可用的文件描述符数量。计数包括网络套接字和文件句柄。
    • 为了优化磁盘访问,RabbitMQ 会使用尽可能多的可用空闲描述符去进行持久化操作(磁盘文件读写操作),如果大部分文件描述符都被套接字使用,那么持久化器的性能将受到负面影响。
  • Socket descriptors:RabbitMQ 管理的网络套接字数量和限制。当限额用尽时,RabbitMQ 将停止接受新的网络连接。初始时,可用socket描述符与可用fd数量的比率大概在0.8-0.9左右,这个值并不固定。
  • Memory:内存指标显示了RabbitMQ节点当前使用的内存量。RabbitMQ会根据工作负载动态地消耗内存。如果内存使用量接近或达到配置的阈值,RabbitMQ可能会触发内存报警,并阻止新的消息发布者连接,以避免内存耗尽。该值可使用不同策略计算,请参阅 vm_memory_calculation_strategy 配置设置。
    • 内存警告
      • RabbitMQ服务器在启动和执行 rabbitmqctl set_vm_memory_high_watermark 的时候会检测机器上的RAM大小,默认情况下,RabbitMQ使用内存超过40%的时候,会发出内存警告,阻塞所有发布消息的连接,一旦警告解除(例如:服务器paging消息到硬盘或者分发消息到消费者并且确认)服务会恢复正常。
      • 默认的内存阀值是40%,注意,这并不会阻止RabbitMQ Server使用不到40%,仅仅意味着到达这个点的时候,发布者会被阻塞block,最坏的情况下,Erlang虚拟机会引起双倍的内存使用(RAM的80%),强烈建议开启操作系统的SWAP和Page files.
      • 内存达到阀值后,发布者会被阻塞,但是消费者不会被阻塞,消费者继续消费消息,当内存降低到阀值以下后,发布者继续开始发布消息。
  • Disk space:当前节点机器剩余可用磁盘空间
    • 磁盘警告
      • 当可用的磁盘空间下降到配置值(最低阀值默认为48MIB,版本3.8.0)之下,会触发所有的警告,所有的生产者会被阻塞,目标是避免填充整个磁盘,这个会导致写操作的失败,导致RabbitMQ中断,为了减小填充磁盘的风险,所有进来的消息都会阻塞;
      • 消费者不会被阻塞,直到磁盘的可用空间升高到最低阀值之上,生产者就会继续开始推送消息。
  • Reset stats:这通常是一个操作或按钮,允许你重置统计信息。这可能包括消息计数、投递细节等统计数据,以便你可以从一个干净的状态开始监控RabbitMQ的性能。