> For the complete documentation index, see [llms.txt](https://docs.natsclub.cn/cn/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.natsclub.cn/cn/nats-gai-nian/subjects.md).

# 基于主题的消息

2,857 / 5,000 翻译结果

## 基于主题的消息传递

从根本上说，NATS 是关于发布和侦听消息的。这两者都严重依赖于\_Subjects\_。

**什么是主题？** 在最简单的情况下，主题只是形成名称的字符串，发布者和订阅者可以使用该名称来查找对方。它有助于将消息范围限定为流或主题。

![](/files/nYJbEBR0VwUAsOhl2Cv6)

#### 主题名称允许使用字符

为了跨客户端的兼容性，我们建议使用 ASCII 字符（将来可能会更改）。

**推荐字符：** `a` 到 `z`、`A` 到 `Z` 和 `0` 到 `9`（名称区分大小写，不能包含空格）。 \*\*特殊字符：\*\*句点`.`（用于分隔主题中的标记）和`*`以及`>`（`*`和`>`用作通配符）。 **保留的主题名称：** 按照惯例，以 `$` 开头的主题名称保留给系统使用（例如，以 `$SYS` 或 `$JS` 或 `$KV` 开头的主题名称等...）

### 主题层次结构

`.` 字符用于创建主题层次结构。例如，世界时钟应用程序可能会定义以下内容以对相关主题进行逻辑分组：

```markup
time.us
time.us.east
time.us.east.atlanta
time.eu.east
time.eu.warsaw
```

### 通配符

NATS 提供了两个 *通配符*，它们可以代替点分隔主题中的一个或多个元素。**订阅者可以使用**这些通配符通过单个订阅收听多个主题，但**发布者**将始终使用完全指定的主题，而**不**使用通配符。

#### 匹配单个标记

第一个通配符是 `*`，它将匹配单个标记。例如，如果应用程序想要监听东部时区，他们可以订阅 `time.*.east`，这将匹配 `time.us.east` 和 `time.eu.east`。

**译者注 单个标记，不是单个字母**

![](/files/HITCi6ayw4nMxY4bszFZ)

#### 匹配多个标记

第二个通配符是`>`，它将匹配一个或多个标记，并且只能出现在主题的末尾。例如，`time.us.>` 将匹配 `time.us.east` 和 `time.us.east.atlanta`，而 `time.us.*` 只会匹配 `time.us.east`，因为它不能匹配多个令牌。

![](/files/cPOX5jfYh3Vi8dN652oc)

#### 监控和分接头

根据您的安全配置，通配符可用于通过创建有时称为 *分接头* 的东西进行监控。在最简单的情况下，您可以为`>` 创建一个订阅者。此应用程序将在安全设置的限制下接收在您的 NATS 集群上发送的所有消息。

#### 混合通配符

通配符 `*` 可以在同一主题中出现多次。两种类型都可以使用。例如，`*.*.east.>` 将收到 `time.us.east.atlanta`。

### 主题标记

建议将主题中的最大标记数保持在最大 16 个的合理值。
