Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
fae6f1f9
T
TDengine
项目概览
taosdata
/
TDengine
大约 1 年 前同步成功
通知
1185
Star
22015
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
fae6f1f9
编写于
8月 15, 2020
作者:
Z
zyyang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update doc: add jdbc example for data subscribe
上级
afd940d9
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
136 addition
and
0 deletion
+136
-0
documentation20/webdocs/markdowndocs/advanced features-ch.md
documentation20/webdocs/markdowndocs/advanced features-ch.md
+136
-0
未找到文件。
documentation20/webdocs/markdowndocs/advanced features-ch.md
浏览文件 @
fae6f1f9
...
...
@@ -295,6 +295,142 @@ $ taos
这时,因为电流超过了10A,您应该可以看到示例程序将它输出到了屏幕上。
您可以继续插入一些数据观察示例程序的输出。
### jdbc使用数据订阅功能
(1)使用订阅功能前的数据准备
```
shell
# 创建power库
taos> create database power
;
# 切换库
taos> use power
;
# 创建超级表
taos> create table meters
(
ts timestamp, current float, voltage int, phase int
)
tags
(
location binary
(
64
)
, groupI
d int
)
;
# 创建表
taos> create table d1001 using meters tags
(
"Beijing.Chaoyang"
,2
)
;
taos> create table d1002 using meters tags
(
"Beijing.Haidian"
,2
)
;
# 插入测试数据
taos> insert into d1001 values
(
"2020-08-15 12:00:00.000"
, 12, 220, 1
)
,
(
"2020-08-15 12:10:00.000"
, 12.3, 220, 2
)
,
(
"2020-08-15 12:20:00.000"
, 12.2, 220, 1
)
;
taos> insert into d1002 values
(
"2020-08-15 12:00:00.000"
, 9.9, 220, 1
)
,
(
"2020-08-15 12:10:00.000"
, 10.3, 220, 1
)
,
(
"2020-08-15 12:20:00.000"
, 11.2, 220, 1
)
;
# 从超级表meters查询current大于10的数据
taos>
select
*
from meters where current
>
10
;
ts | current | voltage | phase| location | groupid |
===========================================================================================================
2020-08-15 12:10:00.000 | 10.30000 | 220 | 1 | Beijing.Haidian | 2 |
2020-08-15 12:20:00.000 | 11.20000 | 220 | 1 | Beijing.Haidian | 2 |
2020-08-15 12:00:00.000 | 12.00000 | 220 | 1 | Beijing.Chaoyang | 2 |
2020-08-15 12:10:00.000 | 12.30000 | 220 | 2 | Beijing.Chaoyang | 2 |
2020-08-15 12:20:00.000 | 12.20000 | 220 | 1 | Beijing.Chaoyang | 2 |
Query OK, 5 row
(
s
)
in
set
(
0.004896s
)
```
(2)使用jdbc提供的订阅功能
```
java
public
class
SubscribeDemo
{
private
static
final
String
topic
=
"topic_meter_current_bg_10"
;
private
static
final
String
sql
=
"select * from meters where current > 10"
;
public
static
void
main
(
String
[]
args
)
{
Connection
connection
=
null
;
Statement
statement
=
null
;
TSDBSubscribe
subscribe
=
null
;
long
subscribeId
=
0
;
try
{
// 加载驱动
Class
.
forName
(
"com.taosdata.jdbc.TSDBDriver"
);
// 获取Connectin
Properties
properties
=
new
Properties
();
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_CHARSET
,
"UTF-8"
);
properties
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_TIME_ZONE
,
"UTC-8"
);
String
jdbcUrl
=
"jdbc:TAOS://127.0.0.1:6030/power?user=root&password=taosdata"
;
connection
=
DriverManager
.
getConnection
(
jdbcUrl
,
properties
);
System
.
out
.
println
(
"create the connection"
);
// 创建Subscribe
subscribe
=
((
TSDBConnection
)
connection
).
createSubscribe
();
// subscribe订阅topic,topic为主题名称,sql为查询语句,restart代表是否每次订阅接受历史数据
subscribeId
=
subscribe
.
subscribe
(
topic
,
sql
,
true
);
System
.
out
.
println
(
"create a subscribe topic: "
+
topic
+
"@["
+
subscribeId
+
"]"
);
int
count
=
0
;
while
(
true
)
{
// 消费数据
TSDBResultSet
resultSet
=
subscribe
.
consume
(
subscribeId
);
// 打印结果集
if
(
resultSet
!=
null
)
{
ResultSetMetaData
metaData
=
resultSet
.
getMetaData
();
while
(
resultSet
.
next
())
{
int
columnCount
=
metaData
.
getColumnCount
();
for
(
int
i
=
1
;
i
<=
columnCount
;
i
++)
{
System
.
out
.
print
(
metaData
.
getColumnLabel
(
i
)
+
" : "
+
resultSet
.
getString
(
i
)
+
"\t"
);
}
System
.
out
.
println
(
"\n===================="
);
count
++;
}
}
if
(
count
>
10
)
break
;
TimeUnit
.
SECONDS
.
sleep
(
1
);
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
finally
{
try
{
if
(
null
!=
subscribe
&&
subscribeId
!=
0
)
{
subscribe
.
unsubscribe
(
subscribeId
,
true
);
System
.
out
.
println
(
"unsubscribe the top@["
+
subscribeId
+
"]"
);
}
if
(
statement
!=
null
)
{
statement
.
close
();
System
.
out
.
println
(
"close the statement."
);
}
if
(
connection
!=
null
)
{
connection
.
close
();
System
.
out
.
println
(
"close the connection."
);
}
}
catch
(
SQLException
throwables
)
{
throwables
.
printStackTrace
();
}
}
}
}
```
(3)订阅功能演示
运行demo,首先,subscribe会将满足情况的历史数据消费
```
shell
# java -jar subscribe.jar
ts : 1597464000000 current : 12.0 voltage : 220 phase : 1 location : Beijing.Chaoyang groupid : 2
====================
ts : 1597464600000 current : 12.3 voltage : 220 phase : 2 location : Beijing.Chaoyang groupid : 2
====================
ts : 1597465200000 current : 12.2 voltage : 220 phase : 1 location : Beijing.Chaoyang groupid : 2
====================
ts : 1597464600000 current : 10.3 voltage : 220 phase : 1 location : Beijing.Haidian groupid : 2
====================
ts : 1597465200000 current : 11.2 voltage : 220 phase : 1 location : Beijing.Haidian groupid : 2
====================
```
接着,使用taos客户端向表中新增数据
```
shell
# taos
taos> use power;
taos> insert into d1001 values
(
"2020-08-15 12:40:00.000"
, 12.4, 220, 1
)
;
```
查看数据消费情况
```
shell
ts : 1597466400000 current : 12.4 voltage : 220 phase : 1 location : Beijing.Chaoyang groupid : 2
====================
```
## 缓存(Cache)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录