Exchange.Name
Exchange 名称。以 amq.开头的为保留字段,因此不能使用。例如:amq.test。
exchange.Type
队列交换器或路由
exchange 共有 4 种类型
- direct
routingKey 相等时才会匹配 - topic
匹配 routingKey,但可以有*
、#
通配符进行匹配,其中*
表示匹配一个单词,#
表示匹配无或多个单词 - fanout
路由到所有绑定的队列中,无需匹配 routingKey - header
根据 header 中的 arguments 判断。x-match
为特殊 header,all
表示必须匹配所有 header、any
表示只需匹配任意一个 header
exchange.Durability
队列持久化
Durability 共有两种类型
exchange 持久化并非消息持久化,消息是否持久化取决于生产 queue 时的设置
- Durable
持久化,会将队列存放在硬盘中,即使重启服务器或全部消费者断开后 exchange 依然存在 - Transient
队列非持久化,重启服务器或全部消费者断开后 exchange 将消失
exchange.Auto delete
消息自动删除
- Yes
服务器重启或全部消费者断开后消息将会被删除 - No
服务器重启或全部消费者断开后消息仍将保存
exchange.Internal
是否为内部专用 exchange
- Yes
内建类型,用于 Exchange 和 Exchange 之间的绑定。 不能往该 exchange 生产消息 - No
非内建类型,用于 Exchange 和 Queue 之间的绑定。可以往该 exchange 生产消息
exchange.Arguments
AMQP 协议留给 AMQP 实现做扩展使用
Queue
创建 Queue
- Type
Queue 类型 - Durability
Queue 是否持久化 - Auto delete
Queue 是否在服务器重启后或全部消费者断开 exchange 后自动删除 - Arguments
Queue 的参数设置,可用于设置死信 Exchange、死信 Routing Key 和消息过期时间。- DeadLetterExchange:指定死信消息发往的 Exchange。
- DeadLetterRoutingKey:指定死信消息的 Routing Key,即死信 Exchange 会将消息发往至匹配该死信 Routing Key 的 Binding Key 所对应的 Queue。
- MessageTTL:消息过期时间,单位毫秒(ms)。超过指定时间段内还未被消费的消息是死信消息,该消息将会被发往死信 Exchange
重试机制
消息队列 RabbitMQ 版服务端有默认的消息重试机制,不支持您在 Consumer 客户端重新配置消息重试机制。消息队列 RabbitMQ 版服务端默认的消息重试机制如下:
- 消费失败,即 Consumer 客户端一分钟内没有应答消息,则触发消息重试。如果您没有开启 Consumer 客户端消费消息,就不会触发消息重试。
- 重试期间,任何一次消费成功,即 Consumer 客户端应答消息,则立即停止消息重试。
- 重试间隔时间为一分钟。
- 重试最多 16 次。超过 16 次,则停止重试。您可以选择:
- 丢弃消息:如果您没有为重试失败的消息所在的 Queue 配置死信 Exchange,则消息重试失败后被丢弃。
- 将消息发送至死信 Exchange:如果您为重试失败的消息所在的 Queue 配置了死信 Exchange,则消息重试失败后被发送到死信 Exchange,并根据 RoutingKey 和 Binding Key 被路由至目标 Queue。目标 Queue 中的消息支持查询和导出。如何配置死信 Exchange,请参见死信 Exchange。