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-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