Java 如何取消订阅数据库中的ChangeFeed?变革结束时

Java 如何取消订阅数据库中的ChangeFeed?变革结束时,java,rethinkdb,Java,Rethinkdb,我只需要知道一次变化。 我知道“changeCursor.close()”可以停止提要。问题是我如何知道这次更改的大小 如果三个用户添加了“System.out.println(change)”,则执行正确的时间。 如果只添加了一个用户,“System.out.println(change)”执行一次。 然后,我需要取消订阅数据库中的Changefeeds Cursor changeCursor = r.table("users").changes().run(conn); for (Objec

我只需要知道一次变化。 我知道“changeCursor.close()”可以停止提要。问题是我如何知道这次更改的大小

如果三个用户添加了“System.out.println(change)”,则执行正确的时间。 如果只添加了一个用户,“System.out.println(change)”执行一次。 然后,我需要取消订阅数据库中的Changefeeds

Cursor changeCursor = r.table("users").changes().run(conn);
for (Object change : changeCursor) {
    System.out.println(change);
}
不要做任何事

changeCursor.toList();
changeCursor.iterator();
真的


我不知道有多少变化。我不知道什么时候执行changeCursor.close()方法。

我真的不知道你在问什么。似乎您希望立即获得第一个更改,然后关闭它

您可以使用javascrip驱动程序执行以下操作:

changeCursor.hasNext();

我不太清楚你在问什么。似乎您希望立即获得第一个更改,然后关闭它

您可以使用javascrip驱动程序执行以下操作:

changeCursor.hasNext();

我需要在第一时间处理所有更改。不仅仅是第一张唱片。如果三条记录同时更改,我如何知道更改大小(3)?处理完三条记录后,我需要关闭游标@李小明 不,不幸的是你不能那样做。想象一下,变更提要是一个无限流,你无法计算它。你需要围绕这个进行设计。你能描述一下你的问题吗?也许我们能找到其他的解决办法?我正在开发一个即时通讯系统。这很合适。但是android不支持Java8。。。我使用套接字提供数据库更改。当消息更改时,套接字将消息发送到android。Android发回一条消息,告诉套接字服务器“消息已收到”。只有一个套接字是这样工作的:从应用程序接收“我准备好了”消息>订阅源更改>当更改发生时,处理此订阅源中的所有数据(如果有3个数据在,则处理3个),然后一起发送到应用程序>应用程序发送“我准备好了,我已收到[message1,message2,Message3]”返回到服务器>服务器订阅源再次更改。while(true){socket.getInputStream();[handle message from app]r.table(“one”).filter(…).run(conn)[有脱机数据,然后发送到app,重新运行到socket.getInputStream()。没有脱机数据,goon]r.table(“one”).changes().run(conn);[changes发生,停止提要,将更改发送到app]socket.getOutputStream()]现在,我只处理第一个更改并关闭提要游标。我一次插入三个数据。但当应用程序发回消息时,r.table(“一”).filter(…).run(conn)只查询一个数据…但两个数据是正确的!下一个同时查询一个数据…我需要在第一时间处理所有更改。不仅仅是第一条记录。如果三条记录同时更改,我如何知道changeFeeds大小(3)?处理完三条记录后,我需要关闭光标@李小明 不,不幸的是,你不能这么做。认为更改提要是一个无限流,你无法计算它。你需要围绕这一点进行设计。你能描述一下你的问题,也许我们可以找到其他解决方案吗?我正在开发一个IM系统。RejectDB非常适合。但android不支持Java8…我使用Socket来提供RejectDB更改。当年龄变化,套接字向android发送消息。android发回一条消息,告诉套接字服务器“消息已接收”。只有一个套接字是这样工作的:从app>feed changes>接收“我准备好了”消息,当变化发生时,处理此提要中的所有数据(如果有3个数据,处理3个),然后一起发送到app>app send“我准备好了,我已经收到[message1,message2,Message3]”返回到服务器>服务器提要再次更改。while(true){socket.getInputStream();[handle message from app]r.table(“one”).filter(…).run(conn)[拥有脱机数据,然后发送到app,重新运行到socket.getInputStream()。没有脱机数据,goon]r.table(“one”).changes()。run(conn);[changes Occess,stop feed,send changes to app]socket.getOutputStream()}现在,我只处理第一个更改并关闭feed游标。我一次插入三个数据。但当app发回消息时,r.table(“一”).filter(…).run(conn)只查询一个数据…但两个数据是正确的!下一次,同时还查询一个数据。。。