跳到主要内容
版本:Next

Enterprise WeChat

企业微信 接收器连接器

支持的引擎

Spark
Flink
SeaTunnel Zeta

描述

一个将 SeaTunnel 行数据发送到企业微信机器人 webhook 的接收器插件。作业配置中的连接器标识符为 WeChat。每一行数据会按 字段名: 字段值 的格式序列化为多行纯文本消息,再发送到 webhook。

该连接器继承自 Http sink,因此自带标准的 HTTP 重试参数(retryretry_backoff_multiplier_msretry_backoff_max_ms),并支持通用的 multi_table_sink_replica 选项以调整多表写入的并行度。

例如,如果上游数据为 {"alarmStatus": "firing", "alarmTime": "2022-08-03 01:38:49", "alarmContent": "The disk usage exceeds the threshold"},企业微信机器人收到的内容如下:

alarmStatus: firing
alarmTime: 2022-08-03 01:38:49
alarmContent: The disk usage exceeds the threshold

关键特性

数据类型映射

连接器会把每一行渲染为一条纯文本消息,每个字段都通过 String.valueOf(value) 转换为字符串, 并以 字段名: 字段值 的格式独立成行。线上消息是纯文本,不存在按类型区分的 JSON 结构。

SeaTunnel 数据类型企业微信消息字段
string字段名: string
tinyint / smallint / int / bigint字段名: number
float / double字段名: number
boolean字段名: true/false
date / time / timestamp字段名: ISO 字符串
bytes / array / map / row字段名: String(toString)

选项

名称类型是否必填默认值描述
urlString-企业微信机器人 webhook URL,格式 https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=XXXXXX
mentioned_listarray-需要提醒的用户 ID 列表,使用 @all 提醒所有人。
mentioned_mobile_listarray-需要提醒的手机号列表,使用 @all 提醒所有人。
retryint-HTTP 请求抛出 IOException 时的最大重试次数。默认不重试。
retry_backoff_multiplier_msint100重试退避倍数,单位毫秒。
retry_backoff_max_msint10000最大重试退避时间,单位毫秒。
multi_table_sink_replicaint1多表写入时使用的写入器副本数。
common-options-接收器插件通用参数,详见 Sink 通用选项

url [string]

企业微信 webhook URL,格式 https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=XXXXXXkey 查询参数是在企业微信群机器人设置中生成的机器人 key。

mentioned_list [array]

需要提醒的用户 ID 列表,使用 @all 提醒所有人。如果无法获取用户 ID,可以使用 mentioned_mobile_list

mentioned_mobile_list [array]

需要提醒的手机号列表,使用 @all 提醒所有人。

retry [int]

HTTP 请求抛出 IOException 时的最大重试次数,默认不重试。重试间隔由 retry_backoff_multiplier_msretry_backoff_max_ms 共同决定。

retry_backoff_multiplier_ms [int]

重试退避的基础单位,单位毫秒。重试之间的等待时间会在多次重试中逐渐增长,上限为 retry_backoff_max_ms。增长曲线并不是每次固定的倍数关系,具体的斐波那契策略请参考 HttpClientProvider(位于 connector-http-base)。默认 100

retry_backoff_max_ms [int]

最大重试退避时间,单位毫秒。默认 10000

multi_table_sink_replica [int]

多表写入时使用的写入器副本数。增加该值可以在每个表上启动更多并行写入器。默认 1

common options

接收器插件通用参数,详见 Sink 通用选项

任务示例

简单示例

env {
parallelism = 1
job.mode = "BATCH"
}

source {
FakeSource {
row.num = 1
schema = {
fields {
alarmStatus = string
alarmTime = string
alarmContent = string
}
}
rows = [
{
fields = ["firing", "2022-08-03 01:38:49", "The disk usage exceeds the threshold"]
}
]
}
}

sink {
WeChat {
url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=693axxx6-7aoc-4bc4-97a0-0ec2sifa5aaa"
}
}

同时 @ 指定用户和手机号

env {
parallelism = 1
job.mode = "BATCH"
}

source {
FakeSource {
row.num = 1
schema = {
fields {
alarmStatus = string
alarmTime = string
alarmContent = string
}
}
rows = [
{
fields = ["firing", "2022-08-03 01:38:49", "The disk usage exceeds the threshold"]
}
]
}
}

sink {
WeChat {
url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=693axxx6-7aoc-4bc4-97a0-0ec2sifa5aaa"
mentioned_list = ["wangqing", "@all"]
mentioned_mobile_list = ["13800001111", "@all"]
}
}

变更日志

Change Log
ChangeCommitVersion
[improve] http connector options (#8969)https://github.com/apache/seatunnel/commit/63ff9f910a2.3.10
[Feature][Restapi] Allow metrics information to be associated to logical plan nodes (#7786)https://github.com/apache/seatunnel/commit/6b7c53d03c2.3.9
[Feature][Core] Support using upstream table placeholders in sink options and auto replacement (#7131)https://github.com/apache/seatunnel/commit/c4ca74122c2.3.6
[Feature][Connector-V2] Support TableSourceFactory/TableSinkFactory on http (#5816)https://github.com/apache/seatunnel/commit/6f49ec6ead2.3.4
[Improve][build] Give the maven module a human readable name (#4114)https://github.com/apache/seatunnel/commit/d7cd6010512.3.1
[Improve][Project] Code format with spotless plugin. (#4101)https://github.com/apache/seatunnel/commit/a2ab1665612.3.1
[Hotfix][OptionRule] Fix option rule about all connectors (#3592)https://github.com/apache/seatunnel/commit/226dc6a1192.3.0
[Feature][Connector-V2][Http] Add option rules && Improve Myhours sink connector (#3351)https://github.com/apache/seatunnel/commit/cc8bb60c832.3.0
[Bug][Connector-V2] Fix wechat sink data serialization (#2856)https://github.com/apache/seatunnel/commit/3aee11fc162.3.0-beta
[Feature][Connector-V2] Add Enterprise Wechat sink connector (#2412)https://github.com/apache/seatunnel/commit/3e200e0a382.2.0-beta