如何使用TDengine的订阅功能订阅数据

How to use TDengine's subscribe function to subscribe data

我想用tdengine的订阅功能订阅一个class的设备数据,实际上是一个超级table。我只是按照他们官方网站上的演示。因为我想恢复消费,所以我没有消费的数据。代码如下:

//CREATE SUBSCRIBE
TSDBSubscribe sub = ((TSDBConnection)conn).subscribe("topic", "select * from meters", false);

//CONSUME DATA
int total = 0;
while(true) {
    TSDBResultSet rs = sub.consume();
    int count = 0;
    while(rs.next()) {
        count++;
    }
    total += count;
    System.out.printf("%d rows consumed, total %d\n", count, total);
    Thread.sleep(1000);
}

//CLOSE SUBSCRIBE 
sub.close(true);

//RELEASE RESOURCE
resultSet.close();
stmt.close();
conn.close();

此代码与他们网站的演示代码相同,但性能不如他们的描述。我设置了“restart = false”,它仍然从头开始消耗。 我希望有人能帮助找出这有什么问题吗?

  1. 我遇到过这个问题。 首先,您可以查看您的 tdengine 客户端的 taoslog.*。你会发现有一个关于路径的错误。 (我忘记了实际名称,但路径名称包括订阅)。
  2. 然后你可以检查路径是否存在,如果不存在请创建它然后尝试。
  3. 如果要查询上次消费后的数据,taos客户端需要在本地标记消费进度。前面提到的路径是什么,会记录进度。