|
@@ -24,12 +24,12 @@
|
|
|
|
|
|
## 参数
|
|
|
|
|
|
-| 参数名 | 是否可选 | 说明 |
|
|
|
-| ------------- | -------- | ------------------------------------------------------------ |
|
|
|
-| id | 否 | 规则 id |
|
|
|
-| sql | 否 | 为规则运行的 sql 查询 |
|
|
|
-| actions | 否 | Sink 动作数组 |
|
|
|
-| options | 是 | 选项图 |
|
|
|
+| 参数名 | 是否可选 | 说明 |
|
|
|
+|---------|------|---------------|
|
|
|
+| id | 否 | 规则 id |
|
|
|
+| sql | 否 | 为规则运行的 sql 查询 |
|
|
|
+| actions | 否 | Sink 动作数组 |
|
|
|
+| options | 是 | 选项图 |
|
|
|
|
|
|
### id
|
|
|
|
|
@@ -43,16 +43,16 @@
|
|
|
|
|
|
当前的选项包括:
|
|
|
|
|
|
-| 选项名 | 类型和默认值 | 说明 |
|
|
|
-| ------------------ | ------------ | ------------------------------------------------------------ |
|
|
|
-| isEventTime | bool:false | 使用事件时间还是将时间用作事件的时间戳。 如果使用事件时间,则将从有效负载中提取时间戳。 必须通过 [stream](../sqls/streams.md) 定义指定时间戳记。 |
|
|
|
-| lateTolerance | int64:0 | 在使用事件时间窗口时,可能会出现元素延迟到达的情况。 LateTolerance 可以指定在删除元素之前可以延迟多少时间(单位为 ms)。 默认情况下,该值为0,表示后期元素将被删除。 |
|
|
|
-| concurrency | int: 1 | 一条规则运行时会根据 sql 语句分解成多个 plan 运行。该参数设置每个 plan 运行的线程数。该参数值大于1时,消息处理顺序可能无法保证。 |
|
|
|
-| bufferLength | int: 1024 | 指定每个 plan 可缓存消息数。若缓存消息数超过此限制,plan 将阻塞消息接收,直到缓存消息被消费使得缓存消息数目小于限制为止。此选项值越大,则消息吞吐能力越强,但是内存占用也会越多。 |
|
|
|
-| sendMetaToSink | bool:false | 指定是否将事件的元数据发送到目标。 如果为 true,则目标可以获取元数据信息。 |
|
|
|
-| sendError | bool: true | 指定是否将运行时错误发送到目标。如果为 true,则错误会在整个流中传递直到目标。否则,错误会被忽略,仅打印到日志中。 |
|
|
|
-| qos | int:0 | 指定流的 qos。 值为0对应最多一次; 1对应至少一次,2对应恰好一次。 如果 qos 大于0,将激活检查点机制以定期保存状态,以便可以从错误中恢复规则。 |
|
|
|
-| checkpointInterval | int:300000 | 指定触发检查点的时间间隔(单位为 ms)。 仅当 qos 大于0时才有效。 |
|
|
|
+| 选项名 | 类型和默认值 | 说明 |
|
|
|
+|--------------------|------------|------------------------------------------------------------------------------------------------|
|
|
|
+| isEventTime | bool:false | 使用事件时间还是将时间用作事件的时间戳。 如果使用事件时间,则将从有效负载中提取时间戳。 必须通过 [stream](../sqls/streams.md) 定义指定时间戳记。 |
|
|
|
+| lateTolerance | int64:0 | 在使用事件时间窗口时,可能会出现元素延迟到达的情况。 LateTolerance 可以指定在删除元素之前可以延迟多少时间(单位为 ms)。 默认情况下,该值为0,表示后期元素将被删除。 |
|
|
|
+| concurrency | int: 1 | 一条规则运行时会根据 sql 语句分解成多个 plan 运行。该参数设置每个 plan 运行的线程数。该参数值大于1时,消息处理顺序可能无法保证。 |
|
|
|
+| bufferLength | int: 1024 | 指定每个 plan 可缓存消息数。若缓存消息数超过此限制,plan 将阻塞消息接收,直到缓存消息被消费使得缓存消息数目小于限制为止。此选项值越大,则消息吞吐能力越强,但是内存占用也会越多。 |
|
|
|
+| sendMetaToSink | bool:false | 指定是否将事件的元数据发送到目标。 如果为 true,则目标可以获取元数据信息。 |
|
|
|
+| sendError | bool: true | 指定是否将运行时错误发送到目标。如果为 true,则错误会在整个流中传递直到目标。否则,错误会被忽略,仅打印到日志中。 |
|
|
|
+| qos | int:0 | 指定流的 qos。 值为0对应最多一次; 1对应至少一次,2对应恰好一次。 如果 qos 大于0,将激活检查点机制以定期保存状态,以便可以从错误中恢复规则。 |
|
|
|
+| checkpointInterval | int:300000 | 指定触发检查点的时间间隔(单位为 ms)。 仅当 qos 大于0时才有效。 |
|
|
|
|
|
|
有关 `qos` 和 `checkpointInterval` 的详细信息,请查看[状态和容错](./state_and_fault_tolerance.md)。
|
|
|
|
|
@@ -79,18 +79,18 @@
|
|
|
|
|
|
每个动作可以定义自己的属性。当前有以下的公共属性:
|
|
|
|
|
|
-| 属性名 | 类型和默认值 | 描述 |
|
|
|
-| ------------- | -------- | ------------------------------------------------------------ |
|
|
|
-| concurrency | int: 1 | 设置运行的线程数。该参数值大于1时,消息发出的顺序可能无法保证。 |
|
|
|
-| bufferLength | int: 1024 | 设置可缓存消息数目。若缓存消息数超过此限制,sink将阻塞消息接收,直到缓存消息被消费使得缓存消息数目小于限制为止。|
|
|
|
-| runAsync | bool:false | 设置是否异步运行输出操作以提升性能。请注意,异步运行的情况下,输出结果顺序不能保证。 |
|
|
|
-| retryInterval | int:1000 | 设置信息发送失败后重试等待时间,单位为毫秒。如果该值的设置 <= 0,那么不会尝试重新发送。 |
|
|
|
-| retryCount | int:3 | 设置信息发送失败后重试次数,如果该值的设置 <= 0,那么不会尝试重新发送。 |
|
|
|
-| cacheLength | int:1024 | 设置最大消息缓存数量。缓存的消息会一直保留直到消息发送成功。缓存消息将按顺序发送,除非运行在异步或者并发模式下。缓存消息会定期存储到磁盘中。 |
|
|
|
-| cacheSaveInterval | int:1000 | 设置缓存存储间隔时间。需要注意的是,当规则关闭时,缓存会自动存储。该值越大,则缓存保存开销越小,但系统意外退出时缓存丢失的风险变大。 |
|
|
|
-| omitIfEmpty | bool: false | 如果配置项设置为 true,则当 SELECT 结果为空时,该结果将不提供给目标运算符。 |
|
|
|
-| sendSingle | true | 输出消息以数组形式接收,该属性意味着是否将结果一一发送。 如果为false,则输出消息将为`{"result":"${the string of received message}"}`。 例如,`{"result":"[{\"count\":30},"\"count\":20}]"}`。否则,结果消息将与实际字段名称一一对应发送。 对于与上述相同的示例,它将发送 `{"count":30}`,然后发送`{"count":20}`到 RESTful 端点。默认为 false。 |
|
|
|
-| dataTemplate | true | [golang 模板](https://golang.org/pkg/html/template)格式字符串,用于指定输出数据格式。 模板的输入是目标消息,该消息始终是映射数组。 如果未指定数据模板,则将数据作为原始输入。 |
|
|
|
+| 属性名 | 类型和默认值 | 描述 |
|
|
|
+|-------------------|-------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
|
+| concurrency | int: 1 | 设置运行的线程数。该参数值大于1时,消息发出的顺序可能无法保证。 |
|
|
|
+| bufferLength | int: 1024 | 设置可缓存消息数目。若缓存消息数超过此限制,sink将阻塞消息接收,直到缓存消息被消费使得缓存消息数目小于限制为止。 |
|
|
|
+| runAsync | bool:false | 设置是否异步运行输出操作以提升性能。请注意,异步运行的情况下,输出结果顺序不能保证。 |
|
|
|
+| retryInterval | int:1000 | 设置信息发送失败后重试等待时间,单位为毫秒。如果该值的设置 <= 0,那么不会尝试重新发送。 |
|
|
|
+| retryCount | int:3 | 设置信息发送失败后重试次数,如果该值的设置 <= 0,那么不会尝试重新发送。 |
|
|
|
+| cacheLength | int:1024 | 设置最大消息缓存数量。缓存的消息会一直保留直到消息发送成功。缓存消息将按顺序发送,除非运行在异步或者并发模式下。缓存消息会定期存储到磁盘中。 |
|
|
|
+| cacheSaveInterval | int:1000 | 设置缓存存储间隔时间。需要注意的是,当规则关闭时,缓存会自动存储。该值越大,则缓存保存开销越小,但系统意外退出时缓存丢失的风险变大。 |
|
|
|
+| omitIfEmpty | bool: false | 如果配置项设置为 true,则当 SELECT 结果为空时,该结果将不提供给目标运算符。 |
|
|
|
+| sendSingle | true | 输出消息以数组形式接收,该属性意味着是否将结果一一发送。 如果为false,则输出消息将为`{"result":"${the string of received message}"}`。 例如,`{"result":"[{\"count\":30},"\"count\":20}]"}`。否则,结果消息将与实际字段名称一一对应发送。 对于与上述相同的示例,它将发送 `{"count":30}`,然后发送`{"count":20}`到 RESTful 端点。默认为 false。 |
|
|
|
+| dataTemplate | true | [golang 模板](https://golang.org/pkg/html/template)格式字符串,用于指定输出数据格式。 模板的输入是目标消息,该消息始终是映射数组。 如果未指定数据模板,则将数据作为原始输入。 |
|
|
|
|
|
|
### 数据模板
|
|
|
|
|
@@ -171,7 +171,7 @@ eKuiper 扩展了几个可以在模版中使用的函数。
|
|
|
|
|
|
### 动态属性
|
|
|
|
|
|
-有些情况下,用户需要按照数据把结果发送到不同的目标中。例如,根据收到的数据,把计算结果发到不同的 mqtt 主题中。使用基于 jsonpath 格式的动态属性,可以实现这样的功能。在以下的例子中,目标的 topic 属性是一个 jsonpath 格式的字符串从而在运行时会将消息发送到动态的主题中。
|
|
|
+有些情况下,用户需要按照数据把结果发送到不同的目标中。例如,根据收到的数据,把计算结果发到不同的 mqtt 主题中。使用基于[数据模板](#数据模板)格式的动态属性,可以实现这样的功能。在以下的例子中,目标的 topic 属性是一个数据模板格式的字符串从而在运行时会将消息发送到动态的主题中。
|
|
|
|
|
|
```json
|
|
|
{
|
|
@@ -180,10 +180,10 @@ eKuiper 扩展了几个可以在模版中使用的函数。
|
|
|
"actions": [{
|
|
|
"mqtt": {
|
|
|
"sendSingle": true,
|
|
|
- "topic": "$.topic"
|
|
|
+ "topic": "prefix/{{.topic}}"
|
|
|
}
|
|
|
}]
|
|
|
}
|
|
|
```
|
|
|
|
|
|
-需要注意的是,上例中的 `sendSingle` 属性已设置。在默认情况下,目标接收到的是数组,使用的 jsonpath 需要采用 `$[0].topic`。
|
|
|
+需要注意的是,上例中的 `sendSingle` 属性已设置。在默认情况下,目标接收到的是数组,使用的 jsonpath 需要采用 `{{index . 0 \"topic\"}}`。
|