SubscribeDemo.java 2.7 KB
Newer Older
Z
change  
zyyang 已提交
1 2
package com.taosdata.example;

S
Shuaiqiang Chang 已提交
3 4 5 6 7 8 9
import com.taosdata.jdbc.TSDBConnection;
import com.taosdata.jdbc.TSDBDriver;
import com.taosdata.jdbc.TSDBResultSet;
import com.taosdata.jdbc.TSDBSubscribe;

import java.sql.DriverManager;
import java.util.Properties;
Z
change  
zyyang 已提交
10
import java.util.concurrent.TimeUnit;
S
Shuaiqiang Chang 已提交
11

Z
change  
zyyang 已提交
12
public class SubscribeDemo {
Z
change  
zyyang 已提交
13
    private static final String usage = "java -jar SubscribeDemo.jar -host <hostname> -database <database name> -topic <topic> -sql <sql>";
B
Bomin Zhang 已提交
14

Z
change  
zyyang 已提交
15 16 17
    public static void main(String[] args) {
        // parse args from command line
        String host = "", database = "", topic = "", sql = "";
S
Shuaiqiang Chang 已提交
18
        for (int i = 0; i < args.length; i++) {
Z
change  
zyyang 已提交
19 20 21 22
            if ("-host".equalsIgnoreCase(args[i]) && i < args.length - 1) {
                host = args[++i];
            }
            if ("-database".equalsIgnoreCase(args[i]) && i < args.length - 1) {
B
Bomin Zhang 已提交
23
                database = args[++i];
S
Shuaiqiang Chang 已提交
24
            }
B
Bomin Zhang 已提交
25 26
            if ("-topic".equalsIgnoreCase(args[i]) && i < args.length - 1) {
                topic = args[++i];
S
Shuaiqiang Chang 已提交
27
            }
B
Bomin Zhang 已提交
28 29
            if ("-sql".equalsIgnoreCase(args[i]) && i < args.length - 1) {
                sql = args[++i];
S
Shuaiqiang Chang 已提交
30 31
            }
        }
Z
change  
zyyang 已提交
32 33
        if (host.isEmpty() || database.isEmpty() || topic.isEmpty() || sql.isEmpty()) {
            System.out.println(usage);
Z
change  
zyyang 已提交
34
            return;
S
Shuaiqiang Chang 已提交
35
        }
Z
change  
zyyang 已提交
36
        /*********************************************************************************************/
S
Shuaiqiang Chang 已提交
37
        try {
Z
change  
zyyang 已提交
38 39 40 41 42 43 44
            Class.forName("com.taosdata.jdbc.TSDBDriver");
            Properties properties = new Properties();
            properties.setProperty(TSDBDriver.PROPERTY_KEY_CHARSET, "UTF-8");
            properties.setProperty(TSDBDriver.PROPERTY_KEY_LOCALE, "en_US.UTF-8");
            properties.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8");
            final String url = "jdbc:TAOS://" + host + ":6030/" + database + "?user=root&password=taosdata";
            // get TSDBConnection
Z
change  
zyyang 已提交
45
            TSDBConnection connection = (TSDBConnection) DriverManager.getConnection(url, properties);
Z
change  
zyyang 已提交
46 47
            // create TSDBSubscribe
            TSDBSubscribe sub = connection.subscribe(topic, sql, false);
S
Shuaiqiang Chang 已提交
48

B
Bomin Zhang 已提交
49
            int total = 0;
Z
change  
zyyang 已提交
50
            while (true) {
B
Bomin Zhang 已提交
51 52
                TSDBResultSet rs = sub.consume();
                int count = 0;
Z
change  
zyyang 已提交
53
                while (rs.next()) {
B
Bomin Zhang 已提交
54
                    count++;
S
Shuaiqiang Chang 已提交
55
                }
B
Bomin Zhang 已提交
56 57
                total += count;
                System.out.printf("%d rows consumed, total %d\n", count, total);
Z
change  
zyyang 已提交
58 59 60
                if (total >= 10)
                    break;
                TimeUnit.SECONDS.sleep(1);
S
Shuaiqiang Chang 已提交
61
            }
Z
change  
zyyang 已提交
62 63
            sub.close(false);
            connection.close();
S
Shuaiqiang Chang 已提交
64 65 66 67
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
Z
change  
zyyang 已提交
68
}