① 列订阅(最常用):
CREATE TOPIC topic_meters AS
SELECT ts, current, voltage FROM meters;
- 订阅指定列的所有写入
- 可附加 WHERE 过滤
- 可订阅子集
② 超级表订阅:
CREATE TOPIC topic_all AS STABLE meters;
- 订阅整张超级表所有列
- 包含所有子表的变化
③ 数据库订阅:
CREATE TOPIC topic_db AS DATABASE test;
- 订阅数据库内所有表的变化
- 用于全库同步场景
① 数据 ETL:
订阅原始数据 → 清洗 → 写入下游
② 实时计算:
订阅指标数据 → 聚合 → 报警
③ 数据同步:
订阅整库 → 同步到异地灾备
④ 数据归档:
订阅冷数据 → 备份到对象存储
⑤ 流计算上游:
流计算引擎订阅 Topic 作为输入源
代码示例
Python 消费者
python复制代码
from taos.tmq import Consumer
consumer = Consumer({
"group.id": "etl_group",
"auto.offset.reset": "earliest",
"td.connect.user": "root",
"td.connect.pass": "taosdata",
"enable.auto.commit": "false",
})
consumer.subscribe(["topic_meters"])
try:
while True:
msg = consumer.poll(timeout=1.0)
if msg is None:
continue
for block in msg:
for row in block:
print(row)
consumer.commit()
finally:
consumer.close()
Java 消费者
java复制代码
Properties props = new Properties();
props.setProperty(TMQConstants.BOOTSTRAP_SERVERS, "127.0.0.1:6030");
props.setProperty(TMQConstants.GROUP_ID, "etl_group");
props.setProperty(TMQConstants.ENABLE_AUTO_COMMIT, "false");
try (TaosConsumer<Meter> consumer = new TaosConsumer<>(props)) {
consumer.subscribe(Collections.singletonList("topic_meters"));
while (running) {
ConsumerRecords<Meter> records = consumer.poll(Duration.ofMillis(1000));
for (ConsumerRecord<Meter> r : records) {
process(r.value());
}
consumer.commitSync();
}
}
管理 Topic
sql复制代码
-- 创建
CREATE TOPIC topic_meters AS SELECT ts, current FROM meters;
-- 查看
SHOW TOPICS;
-- 查看 Consumer Group 状态
SELECT * FROM information_schema.ins_subscriptions;
-- 删除
DROP TOPIC topic_meters;
TDengine 专为物联网IoT平台、工业大数据平台设计。其中,TDengine TSDB 是一款高性能、分布式的时序数据库(Time Series Database),同时它还带有内建的缓存、流式计算、数据订阅等系统功能;TDengine IDMP 是一款AI原生工业数据管理平台,它通过树状层次结构建立数据目录,对数据进行标准化、情景化,并通过 AI 提供实时分析、可视化、事件管理与报警等功能。