update doc: add jdbc example for data subscribe
This commit is contained in:
parent
afd940d903
commit
fae6f1f975
|
@ -295,6 +295,142 @@ $ taos
|
||||||
这时,因为电流超过了10A,您应该可以看到示例程序将它输出到了屏幕上。
|
这时,因为电流超过了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)
|
## 缓存(Cache)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue