队列的参数即声明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-length
、x-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 |