RabbitMQ 消息队列:队列的参数与消息的属性

队列的参数即声明Queues时的Arguments。
消息的属性即向Exchange发布消息时的Properties。

Queues Arguments

Message TTL
消息的存活时间,写入队列后被消费前可以存活的时间单位毫秒,通过x-message-ttl属性设置。

Auto expire
队列的存活时间,指定时间内没有consumer或get方式请求队列消息则会自动删除,通过x-expires属性设置。

Dead letter exchange
死信消息的exchange,通过x-dead-letter-exchange属性设置。

Dead letter routing key
死信消息的路由键,通过x-dead-letter-routing-key属性设置。

Maximum priority
消息支持的最大优先级,可实现优先级消息队列,通过x-max-priority属性设置。

Max length
队列的最大消息数,通过x-max-length属性设置。

Max length bytes
队列的消息的最大字节数,通过x-max-length-bytes属性设置。

Lazy mode
懒惰队列模式,将队列内容移动到磁盘上,当消息者请求时加载入内存,这样可以支持非常长的队列,通过x-queue-mode属性设置。

Master locator
在RabbitMQ的高可用镜像模式中,队列消息首先会写入主节点再依次备份至从节点,通过x-queue-master-locator属性设置队列的主节点选择策略。

  • 选择承担主节点最少的节点min-masters
  • 选择声明队列客户端连接到的节点client-local
  • 随机挑选一个节点random

死信相关
当消息满足以下三种情况之一时会当做死信来处理:

  • 消息被拒绝 (basic.reject or basic.nack)
  • 消息未消费超时
  • 超出队列长度限制

队列最大长度相关
通过x-max-lengthx-max-length-bytes来设置队列的最大长度。一个可以控制队列消息的个数,一个可以控制队列占用的空间。如果两个都设置任何一个触发都会执行队列溢出行为,默认的队列溢出后会从队列头开始丢弃消息或进行死信处理。通过x-overflow可以设置队列溢出后的行为,值为drop-head(默认值)或reject-publish(拒绝新消息)。

Message Properties

属性 说明
content_type MIME类型
content_encoding MIME编码
priority 消息优先级
correlation_id 业务应用关联标识
reply_to 回复队列名称
expiration 过期时间
message_id 业务应用消息标识
timestamp 消息写入时间戳
type 消息类型
user_id 用户id
app_id 应用id
cluster_id 集群id