---
title: 基本概念
---

# 基本概念

本章解释 FlowMQ 中最常用的概念与术语。这些概念是理解和使用 FlowMQ 的基础。

::: warning 协议无关
以下所有概念都是协议无关的，它们是 FlowMQ 的内部概念。
:::

## 消息

消息是数据流转的基本单元，包含：

- **Payload**：业务数据本体，通常为二进制或文本。
- **元数据 / 属性**：可选键值对，用于携带业务标签、追踪信息、内容类型、时间戳等。

消息进入 FlowMQ 后会被转换为内部统一格式，以便跨协议路由与投递。

## Topic

Topic 是 FlowMQ 内部的路由地址。消息进入系统时，协议适配器从各协议消息中提取并映射出 Topic，路由引擎据此进行匹配与分发。

Topic 采用层级命名结构，以 `/` 作为分隔符，例如：`building/1/floor/2/thermostat/temperature`

详见[消息路由 — Topic](./message-routing#topic消息的路由地址)。

## Destination

Destination 是消息的投递目标。每个 Destination 关联一组 topic filters，路由引擎将匹配的消息投递到对应的 Destination。FlowMQ 目前支持以下 Destination 类型：

### Subscription

实时推送给在线订阅者。同一条消息可被多个 Subscription 同时接收，适用于事件广播、实时通知等场景。

### Stream

以追加日志形式持久化消息，支持按偏移量消费与历史回放。适用于事件流、日志管道、数据回溯等场景。

### Queue

如果多个消费者共享同一队列，那么每条消息只被一个消费者处理。消息确认后会被删除。适用于任务分发、负载均衡等场景。

详见[消息路由 — Destination](./message-routing#destination消息的投递目标)。

## Topic Filter

Topic filter 用于匹配一个或多个 Topic，支持通配符：

- `+`：匹配单个层级，例如 `building/+/floor/2/#`
- `#`：匹配剩余所有层级（须位于末尾），例如 `building/1/#`

Destination 通过 topic filter 声明自己关注哪些 Topic 上的消息。

## 生产者与消费者

- **生产者**：创建并发送消息的客户端应用（MQTT 中称 Publisher，Kafka 中称 Producer）。
- **消费者**：接收并处理消息的客户端应用（MQTT 中称 Subscriber，Kafka 中称 Consumer）。
