标头

消息标头在多种 JetStream 上下文中使用,例如去重、自动清除消息、重新发布消息的元数据等。

Nats- 是一个保留命名空间。请为你自定义的消息头使用其他前缀。此列表可能不完整,额外的消息头可能会用于 API 内部消息,或用于监控和控制的消息。

发布

客户端在发布消息时可以设置的标头。这些标头会被服务器识别。

名称描述示例版本
Nats-Msg-Id客户端定义的消息唯一标识符,服务器将在配置的“重复窗口”内使用该标识符进行去重。9f01ccf0-8c34-4789-8688-231a2538a98b2.2.0
Nats-Expected-Stream用于断言发布的消息将被某个预期的流接收。my-stream2.2.0
Nats-Expected-Last-Msg-Id用于在流级别应用乐观并发控制。该值为最后一个预期的 Nats-Msg-Id,如果当前 ID 不匹配,服务器将拒绝发布。9f01ccf0-8c34-4789-8688-231a2538a98b2.2.0
Nats-Expected-Last-Sequence用于在流级别应用乐观并发控制。该值为最后一个预期的序列号,如果当前序列号不匹配,服务器将拒绝发布。3282.2.0
Nats-Expected-Last-Subject-Sequence用于在主题级别应用乐观并发控制。该值为最后一个预期的序列号,如果当前序列号不匹配消息的主题,服务器将拒绝发布。382.3.1
Nats-Expected-Last-Subject-Sequence-Subject可能包含通配符的主题。与 Nats-Expected-Last-Subject-Sequence 一起使用。服务器将针对给定主题而非正在发布的主题强制执行最后序列号。events.orders.1.>2.11.0
Nats-Rollup用于清除流或主题级别之前的所有消息。rollup message(汇总消息)将保留在流中。all 清除整个流,sub 清除发送此消息的主题。不允许使用通配符主题,否则会导致未定义的行为。2.6.2

重新发布

当消息被流重新发布时(必须在流设置中配置),这些标头会被设置。

不要在客户端发布的消息上设置这些标头。

名称描述示例版本
Nats-Stream消息重新发布的流名称。Nats-Stream: my-stream2.8.3
Nats-Subject消息的原始主题。events.mouse_clicked2.8.3
Nats-Sequence消息的原始序列号。1932.8.3
Nats-Last-Sequence具有相同主题的消息的最后一个序列号,如果没有,则为零。1902.8.3
Nats-Time-Stamp消息的原始时间戳。2023-08-23T19:53:05.762416Z2.10.0

源(Sources)

隐式添加到从其他流获取的消息的标头。

未来消息头内容的格式可能发生变更。请采取保守的解析策略,并假定未来可能会添加更多字段,或更旧版本的 nats-server 可能包含较少的字段。

名称描述示例版本
Nats-Stream-Source包含空格分隔的:
- 原始流名称(如果跨域获取则使用域哈希消歧)
- 原始序列号
- 主题过滤器列表
- 目标转换列表
- 原始主题
ORDERS:vSF0ECo6 17 foo.* bar.$1 foo.abc2.2.0

仅标头

当消费者配置为“仅标头”时添加到消息的标头,省略消息体。

名称描述示例版本
Nats-Msg-Size表示消息大小(字节)。10242.6.2

镜像

镜像内部流量控制消息使用的标头。

以下内容仅供参考,如有更改,恕不另行通知。

名称描述示例版本
Nats-Last-Consumer2.2.1
Nats-Last-Stream2.2.1
Nats-Consumer-Stalled2.4.0
Nats-Response-Type2.6.4