This is an automated email from the ASF dual-hosted git repository.
davidzollo pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/seatunnel.git
The following commit(s) were added to refs/heads/dev by this push:
new 84214d913b [Docs][Connector-V2] Improve RocketMQ Milvus and Qdrant
docs (#11360)
84214d913b is described below
commit 84214d913b1f23a19c62eabcc91f90a9c267b3ec
Author: Daniel Carter <[email protected]>
AuthorDate: Mon Jul 6 22:49:01 2026 +0800
[Docs][Connector-V2] Improve RocketMQ Milvus and Qdrant docs (#11360)
Co-authored-by: DanielCarter-stack
<[email protected]>
---
docs/en/connectors/sink/Milvus.md | 3 ++-
docs/en/connectors/sink/Qdrant.md | 1 +
docs/en/connectors/sink/RocketMQ.md | 10 +++++++---
docs/en/connectors/source/Milvus.md | 3 +--
docs/en/connectors/source/Qdrant.md | 2 ++
docs/en/connectors/source/RocketMQ.md | 9 ++++++++-
docs/zh/connectors/sink/Milvus.md | 3 ++-
docs/zh/connectors/sink/Qdrant.md | 1 +
docs/zh/connectors/sink/RocketMQ.md | 9 ++++++---
docs/zh/connectors/source/Milvus.md | 3 +--
docs/zh/connectors/source/Qdrant.md | 2 ++
docs/zh/connectors/source/RocketMQ.md | 9 ++++++++-
12 files changed, 41 insertions(+), 14 deletions(-)
diff --git a/docs/en/connectors/sink/Milvus.md
b/docs/en/connectors/sink/Milvus.md
index 30ba9c072c..832bb9dae1 100644
--- a/docs/en/connectors/sink/Milvus.md
+++ b/docs/en/connectors/sink/Milvus.md
@@ -60,7 +60,7 @@ Common use cases:
| enable_upsert | boolean | No | true
| Whether to write by upsert instead of insert. Upsert needs a
primary key in the collection schema.
|
| enable_dynamic_field | boolean | No | true
| Whether to enable Milvus dynamic fields when SeaTunnel creates a
collection.
|
| batch_size | int | No | 1000
| Number of records buffered before one write. In streaming jobs,
data can also be flushed when a checkpoint is triggered.
|
-| rate_limit | int | No | 100000
| Maximum write rate used by the connector retry/rate-limit control.
|
+| rate_limit | int | No | 100000
| Milvus collection write-rate limit in MB/s. When greater than 0,
the connector sets `collection.insertRate.max.mb` and
`collection.upsertRate.max.mb` while the writer is running.
|
| partition_key | String | No | -
| Field name used as the Milvus partition key when SeaTunnel creates
a collection.
|
| create_index | boolean | No | false
| Whether to create vector indexes for the target collection. When
copying from Milvus source, existing vector index metadata can be used to
create matching indexes on the target collection.
|
| load_collection | boolean | No | false
| Whether to load the target collection into Milvus memory after the
collection is created. This is useful when the data should be queried
immediately after writing.
|
@@ -74,6 +74,7 @@ Common use cases:
- When a Milvus source reads partitions, the sink can create the same
partition names on the target collection if the target collection does not use
a partition key.
- `create_index = true` only creates vector indexes when index metadata is
available from the upstream catalog, such as when the source is Milvus.
- `enable_upsert = true` writes by primary key and requires a primary key in
the target collection. Use `enable_upsert = false` when writing rows that
should be inserted directly.
+- `rate_limit` changes Milvus collection properties while the writer is open
and resets the insert/upsert limits to `-1` when the writer closes.
- `load_collection = true` loads the collection after creation so it can be
queried immediately after the write finishes.
## Task Example
diff --git a/docs/en/connectors/sink/Qdrant.md
b/docs/en/connectors/sink/Qdrant.md
index 0ab9fa6beb..9a6b0eeadf 100644
--- a/docs/en/connectors/sink/Qdrant.md
+++ b/docs/en/connectors/sink/Qdrant.md
@@ -76,6 +76,7 @@ The value of the primary key column is used as the Qdrant
point ID. Primary key
- The target collection must already exist before the job starts. The
connector does not create collections or vector indexes.
- Vector column names and dimensions must match the vector configuration of
the target Qdrant collection.
- The sink writes vector columns as named vectors. Use a target collection
with named vectors that match the SeaTunnel vector column names.
+- Avoid null values in payload and vector fields before writing to Qdrant,
because the writer converts each configured field directly into a Qdrant point
value.
- The sink writes each incoming row as an upsert request. It does not
interpret `UPDATE` or `DELETE` row kinds as CDC operations.
- The writer buffers up to 64 points and also flushes when the writer is
closed or a commit is prepared. This batch size is not currently exposed as a
connector option.
- Each sink block writes to one collection. Use separate sink blocks when
different collections need different settings.
diff --git a/docs/en/connectors/sink/RocketMQ.md
b/docs/en/connectors/sink/RocketMQ.md
index 588b04e876..f0d948d796 100644
--- a/docs/en/connectors/sink/RocketMQ.md
+++ b/docs/en/connectors/sink/RocketMQ.md
@@ -35,7 +35,7 @@ Writes SeaTunnel rows to an Apache RocketMQ topic. The sink
supports JSON and te
| secret.key | String | no | - | Secret key. Required when `acl.enabled` is
`true`. |
| producer.group | String | no | SeaTunnel-Producer-Group | RocketMQ producer
group ID. |
| tag | String | no | - | RocketMQ message tag written with each message. |
-| partition.key.fields | List | no | - | Field names used to choose the target
RocketMQ queue. Every listed field must exist in the upstream schema. |
+| partition.key.fields | List | no | - | Field names serialized as the
RocketMQ message key. Every listed field must exist in the upstream schema. |
| format | String | no | json | Message format. Supported values are `json`
and `text`. |
| field.delimiter | String | no | `,` | Field delimiter used when `format =
text`. |
| producer.send.sync | Boolean | no | false | Whether to send messages
synchronously. When `false`, messages are sent asynchronously. |
@@ -48,9 +48,13 @@ Writes SeaTunnel rows to an Apache RocketMQ topic. The sink
supports JSON and te
### partition.key.fields
-`partition.key.fields` controls which RocketMQ queue receives each message.
SeaTunnel hashes the configured field values and uses the hash to choose a
queue. If this option is not set, RocketMQ chooses the queue.
+`partition.key.fields` controls the RocketMQ message key. SeaTunnel serializes
+the configured field values as JSON and writes that value to `Message.keys`.
For
+non-transactional sends, the same key is also used by RocketMQ's hash queue
+selector, so rows with the same key are sent to the same queue. If this option
is
+not set, RocketMQ chooses the queue.
-For example, if the input schema contains `c_int`, this configuration uses
`c_int` as the queue key:
+For example, if the input schema contains `c_int`, this configuration uses
`c_int` to build the message key:
```hocon
partition.key.fields = ["c_int"]
diff --git a/docs/en/connectors/source/Milvus.md
b/docs/en/connectors/source/Milvus.md
index 590ff0eb06..8b8b5d3325 100644
--- a/docs/en/connectors/source/Milvus.md
+++ b/docs/en/connectors/source/Milvus.md
@@ -54,13 +54,12 @@ Common use cases:
| token | String | Yes | - | Milvus authentication token. For
a local Milvus server this is usually `username:password`.
|
| database | String | No | default | Source database.
|
| collection | String | No | - | Source collection. If it is set,
only this collection is read. If it is not set, all collections under
`database` are read. |
-| batch_size | Int | No | 1000 | Number of records fetched in one
source read batch.
|
-| rate_limit | Int | No | 1000000 | Maximum source read rate limit.
|
## Notes
- `database` defaults to `default`, so simple local Milvus jobs do not need to
set it.
- `collection` is optional. Set it when the job should read exactly one
collection.
+- The source currently exposes only `url`, `token`, `database`, and
`collection` as user-facing options. Read batching and retry behavior use
connector defaults.
- When `collection` is not set, the source discovers all collections in
`database` and exposes each collection as a separate SeaTunnel table.
- The source splits work by Milvus partition. Collections with a partition key
are read with one split; collections without a partition key are split by
partition name and assigned across readers.
- When the source reads a collection with partitions, downstream Milvus sink
can use that metadata to create the same partition names on the target
collection.
diff --git a/docs/en/connectors/source/Qdrant.md
b/docs/en/connectors/source/Qdrant.md
index a7067cda71..7448375397 100644
--- a/docs/en/connectors/source/Qdrant.md
+++ b/docs/en/connectors/source/Qdrant.md
@@ -46,6 +46,7 @@ Each Qdrant record is a point:
- Vector columns are read from Qdrant vectors. For named vectors, the
SeaTunnel column name must match the Qdrant vector name.
- Other supported columns are read from the Qdrant point payload.
- If the collection uses one default unnamed vector, use `default_vector` as
the SeaTunnel vector column name.
+- Include only payload or vector fields that exist on the points being read.
The source maps fields directly by name and expects configured fields to be
present.
Example:
@@ -110,6 +111,7 @@ Source plugin common parameters, see [Source Common
Options](../common-options/s
- The collection must already exist before the job starts.
- Vector field names and dimensions in Qdrant must match the vector columns in
the SeaTunnel schema.
+- For a collection with one unnamed vector, name the SeaTunnel vector column
`default_vector`.
- The source is bounded and reads with one split, so it is not a parallel
source.
- Qdrant source emits `INSERT` rows only; it does not read CDC changes.
diff --git a/docs/en/connectors/source/RocketMQ.md
b/docs/en/connectors/source/RocketMQ.md
index 9c44f68c0e..695b29c6d2 100644
--- a/docs/en/connectors/source/RocketMQ.md
+++ b/docs/en/connectors/source/RocketMQ.md
@@ -36,7 +36,7 @@ Reads messages from Apache RocketMQ topics. The connector can
read one or more t
| topics | String | no | - | Topic name list separated by commas, for example
`"topic_a,topic_b"`. Configure only one of `topics`, `tables_configs`, and
`table_list`. |
| tables_configs | List | no | - | Multi-table read configuration. Each item
must contain `topics` and can contain `format`, `schema`, `tags`, `start.mode`,
`start.mode.timestamp`, `start.mode.offsets`, and `ignore_parse_errors`. |
| table_list | List | no | - | Deprecated. Use `tables_configs` instead. |
-| tags | String | no | - | Tag list separated by commas. Only messages with
these tags are consumed. |
+| tags | String | no | - | Tag list separated by commas. Only messages whose
RocketMQ tag exactly matches one configured value are consumed. |
| acl.enabled | Boolean | no | false | Whether to enable RocketMQ ACL
authentication. |
| access.key | String | no | - | Access key. Required when `acl.enabled` is
`true`. |
| secret.key | String | no | - | Secret key. Required when `acl.enabled` is
`true`. |
@@ -92,6 +92,13 @@ When `format = text`, SeaTunnel splits the message body by
`field.delimiter`
and maps the values to fields in schema order. If `schema` is omitted, the
message body is read as a single text value.
+### Tags
+
+`tags` uses a comma-separated list such as `tag_a,tag_b`. The connector
compares
+the pulled message tag with these values, so do not use RocketMQ tag expression
+syntax such as `tag_a || tag_b` here. In multi-table jobs, each
`tables_configs`
+entry can set its own `tags` filter.
+
### Multi-Table Read
Use `tables_configs` when different topics have different schemas. Each item
must contain `topics` and can define its own `schema`, `format`, `tags`, and
startup position. If `schema.table` is not set, the output table name defaults
to the topic name.
diff --git a/docs/zh/connectors/sink/Milvus.md
b/docs/zh/connectors/sink/Milvus.md
index 9dbd15d962..bc4fdb03f6 100644
--- a/docs/zh/connectors/sink/Milvus.md
+++ b/docs/zh/connectors/sink/Milvus.md
@@ -60,7 +60,7 @@ SeaTunnel 表结构创建目标集合,并支持向量字段、动态字段、
| enable_upsert | boolean | 否 | true
| 是否使用更新插入模式写入,而不是普通插入模式。更新插入需要集合中有主键。
|
| enable_dynamic_field | boolean | 否 | true
| SeaTunnel 创建集合时,是否启用 Milvus 动态字段。
|
| batch_size | int | 否 | 1000
| 写入前缓存的记录数。流任务中,检查点触发时也会刷新写入。
|
-| rate_limit | int | 否 | 100000
| 连接器用于重试和限流控制的最大写入速率。
|
+| rate_limit | int | 否 | 100000
| Milvus collection 写入限速,单位 MB/s。大于 0 时,写入器运行期间会设置
`collection.insertRate.max.mb` 和 `collection.upsertRate.max.mb`。 |
| partition_key | String | 否 | -
| SeaTunnel 创建集合时使用的 Milvus 分区键字段名。
|
| create_index | boolean | 否 | false
| 是否为目标集合创建向量索引。从 Milvus 源端复制时,可以利用上游索引元数据在目标集合创建相同索引。
|
| load_collection | boolean | 否 | false
| 创建集合后是否把目标集合加载到 Milvus 内存中。如果写完马上要查询,可以开启。
|
@@ -74,6 +74,7 @@ SeaTunnel 表结构创建目标集合,并支持向量字段、动态字段、
- Milvus 源端读取分区后,如果目标集合没有使用分区键,接收器可以在目标集合创建相同分区名。
- `create_index = true` 只有在上游目录信息能提供索引元数据时才会创建向量索引,例如上游也是 Milvus。
- `enable_upsert = true` 会按主键更新插入,目标集合中需要有主键。希望直接追加写入时,可以设置 `enable_upsert =
false`。
+- `rate_limit` 会在写入器运行期间修改 Milvus collection 属性,并在写入器关闭时把 insert/upsert 限速重置为
`-1`。
- `load_collection = true` 会在创建集合后加载集合,这样写入完成后可以马上查询。
## 任务示例
diff --git a/docs/zh/connectors/sink/Qdrant.md
b/docs/zh/connectors/sink/Qdrant.md
index fa9e947967..fa306fb5af 100644
--- a/docs/zh/connectors/sink/Qdrant.md
+++ b/docs/zh/connectors/sink/Qdrant.md
@@ -76,6 +76,7 @@ Sink 插件通用参数,请参考 [Sink 通用选项](../common-options/sink-c
- 目标 collection 必须在作业启动前已经存在。连接器不会自动创建 collection 或向量索引。
- 向量列名和维度必须与目标 Qdrant collection 的向量配置一致。
- sink 会把向量列写成命名向量。目标 collection 中的命名向量需要和 SeaTunnel 向量列名一致。
+- 写入 Qdrant 前,请先处理 payload 和向量字段中的空值,因为写入器会把每个配置字段直接转换成 Qdrant point 值。
- sink 会把每条输入行作为 upsert 写入,不会按 `UPDATE` 或 `DELETE` 行类型执行 CDC 语义。
- 写入器最多缓存 64 个 point,并且在关闭写入器或准备提交时也会刷新。这一批次大小目前不是可配置项。
- 每个 sink 配置块写入一个 collection。如果不同 collection 需要不同配置,请使用多个 sink 配置块。
diff --git a/docs/zh/connectors/sink/RocketMQ.md
b/docs/zh/connectors/sink/RocketMQ.md
index d9a2f41767..86450321f6 100644
--- a/docs/zh/connectors/sink/RocketMQ.md
+++ b/docs/zh/connectors/sink/RocketMQ.md
@@ -35,7 +35,7 @@ import ChangeLog from '../changelog/connector-rocketmq.md';
| secret.key | String | 否 | - | 秘密密钥。`acl.enabled = true` 时必填。 |
| producer.group | String | 否 | SeaTunnel-Producer-Group | RocketMQ 生产者组 ID。 |
| tag | String | 否 | - | 写入每条消息时使用的 RocketMQ tag。 |
-| partition.key.fields | List | 否 | - | 用来选择 RocketMQ 队列的字段名。配置的字段必须存在于上游
schema 中。 |
+| partition.key.fields | List | 否 | - | 会被序列化为 RocketMQ 消息 key
的字段名。配置的字段必须存在于上游 schema 中。 |
| format | String | 否 | json | 消息格式。支持 `json` 和 `text`。 |
| field.delimiter | String | 否 | `,` | `format = text` 时使用的字段分隔符。 |
| producer.send.sync | Boolean | 否 | false | 是否同步发送消息。为 `false` 时异步发送。 |
@@ -48,9 +48,12 @@ import ChangeLog from '../changelog/connector-rocketmq.md';
### partition.key.fields
-`partition.key.fields` 控制消息写入哪个 RocketMQ 队列。SeaTunnel
会对这些字段的值做哈希,并用哈希结果选择队列。如果不配置该参数,则由 RocketMQ 自行选择队列。
+`partition.key.fields` 控制 RocketMQ 消息 key。SeaTunnel 会把这些字段的值序列化成
+JSON,并写入 `Message.keys`。在非事务发送时,同一个 key 还会交给 RocketMQ
+的哈希队列选择器,因此相同 key 的数据会进入同一个队列。如果不配置该参数,则由
+RocketMQ 自行选择队列。
-例如,上游字段中有 `c_int` 时,可以这样配置:
+例如,上游字段中有 `c_int` 时,可以这样把 `c_int` 用作消息 key:
```hocon
partition.key.fields = ["c_int"]
diff --git a/docs/zh/connectors/source/Milvus.md
b/docs/zh/connectors/source/Milvus.md
index c2543cdf8f..e1166d5a1c 100644
--- a/docs/zh/connectors/source/Milvus.md
+++ b/docs/zh/connectors/source/Milvus.md
@@ -54,13 +54,12 @@ Milvus 源连接器用于从 Milvus 或 Zilliz Cloud 读取数据。它可以读
| token | String | 是 | - | Milvus 认证令牌。本地 Milvus 通常使用
`username:password`。 |
| database | String | 否 | default | 源数据库。
|
| collection | String | 否 | - | 源集合。配置后只读取这个集合;不配置时读取 `database`
下的所有集合。 |
-| batch_size | Int | 否 | 1000 | 每批从 Milvus 读取的数据条数。
|
-| rate_limit | Int | 否 | 1000000 | 源端读取速率限制。
|
## 注意事项
- `database` 默认是 `default`,本地 Milvus 的简单任务通常不用配置。
- `collection` 是可选项。只想读一个集合时再配置。
+- 源端目前对用户开放的参数只有 `url`、`token`、`database` 和 `collection`。读取批次和重试行为使用连接器内置默认值。
- 不配置 `collection` 时,源端会发现 `database` 下的所有集合,并把每个集合作为一张独立的 SeaTunnel 表输出。
- 源端会按 Milvus 分区拆分读取任务。有分区键的集合使用一个 split 读取;没有分区键的集合会按分区名拆分,并分配给多个 reader。
- 源端读取带分区的集合时,下游 Milvus 接收器可以利用这些元数据在目标集合创建相同分区名。
diff --git a/docs/zh/connectors/source/Qdrant.md
b/docs/zh/connectors/source/Qdrant.md
index c40ec13d66..f73aba300a 100644
--- a/docs/zh/connectors/source/Qdrant.md
+++ b/docs/zh/connectors/source/Qdrant.md
@@ -46,6 +46,7 @@ Qdrant 中的每条记录叫作 point:
- 向量列会从 Qdrant 向量中读取。读取命名向量时,SeaTunnel 列名必须和 Qdrant 向量名一致。
- 其他支持的列会从 Qdrant point payload 中读取。
- 如果 collection 使用默认的未命名向量,请使用 `default_vector` 作为 SeaTunnel 向量列名。
+- schema 中只配置实际存在的 payload 或向量字段。Source 会按字段名直接取值,配置的字段需要在读取到的 point 中存在。
示例:
@@ -110,6 +111,7 @@ Source 插件通用参数,请参考 [Source 通用选项](../common-options/so
- 作业启动前,collection 必须已经存在。
- Qdrant 中的向量字段名和维度必须与 SeaTunnel schema 中的向量列一致。
+- 如果 collection 只有一个未命名向量,请把 SeaTunnel 向量列命名为 `default_vector`。
- Qdrant source 是有界读取,并且只使用一个 split,不支持并行读取。
- Qdrant source 只输出 `INSERT` 行,不读取 CDC 变更。
diff --git a/docs/zh/connectors/source/RocketMQ.md
b/docs/zh/connectors/source/RocketMQ.md
index 1abca1cc75..08888b3cfb 100644
--- a/docs/zh/connectors/source/RocketMQ.md
+++ b/docs/zh/connectors/source/RocketMQ.md
@@ -36,7 +36,7 @@ import ChangeLog from '../changelog/connector-rocketmq.md';
| topics | String | 否 | - | topic 名称,多个 topic 使用逗号分隔,例如
`"topic_a,topic_b"`。`topics`、`tables_configs` 和 `table_list` 只能配置其中一个。 |
| tables_configs | List | 否 | - | 多表读取配置。每一项必须包含 `topics`,并可配置
`format`、`schema`、`tags`、`start.mode`、`start.mode.timestamp`、`start.mode.offsets`
和 `ignore_parse_errors`。 |
| table_list | List | 否 | - | 已废弃,请使用 `tables_configs`。 |
-| tags | String | 否 | - | tag 名称,多个 tag 使用逗号分隔。只消费匹配这些 tag 的消息。 |
+| tags | String | 否 | - | tag 名称,多个 tag 使用逗号分隔。只消费 RocketMQ tag 与配置值完全匹配的消息。 |
| acl.enabled | Boolean | 否 | false | 是否启用 RocketMQ ACL 鉴权。 |
| access.key | String | 否 | - | 访问密钥。`acl.enabled = true` 时必填。 |
| secret.key | String | 否 | - | 秘密密钥。`acl.enabled = true` 时必填。 |
@@ -86,6 +86,13 @@ start.mode.timestamp = 1667179890315
当 `format = text` 时,SeaTunnel 会按 `field.delimiter` 拆分消息体,并按照 schema
字段顺序映射数据。如果不配置 `schema`,消息体会作为单个文本值读取。
+### 标签
+
+`tags` 使用逗号分隔,例如 `tag_a,tag_b`。连接器会把拉取到的消息 tag
+和这些值逐个做精确匹配,因此这里不要使用 RocketMQ 的 tag 表达式语法,例如
+`tag_a || tag_b`。在多表读取任务中,每个 `tables_configs` 条目都可以配置自己的
+`tags` 过滤条件。
+
### 多表读取
当不同 topic 的字段结构不一样时,使用 `tables_configs`。每一项都必须包含 `topics`,并且可以单独配置
`schema`、`format`、`tags` 和启动消费位置。如果没有配置 `schema.table`,输出表名默认使用 topic 名称。