我正尝试使用来自Java的couchdb(连续)更改API,并发现在耗尽当前更改列表后,流似乎已关闭,而不是保持打开状态,因为它应该是这样。如何使用CouchDB变更通知从Java持续更改?
我使用的代码如下。我希望永远不会从while循环中退出,但只要当前存在的更改完成流式处理即可。我对couchdb和Java都比较陌生,所以可能会漏掉一些明显的东西。任何人都可以告诉我如何正确写入?
我正尝试使用来自Java的couchdb(连续)更改API,并发现在耗尽当前更改列表后,流似乎已关闭,而不是保持打开状态,因为它应该是这样。如何使用CouchDB变更通知从Java持续更改?
我使用的代码如下。我希望永远不会从while循环中退出,但只要当前存在的更改完成流式处理即可。我对couchdb和Java都比较陌生,所以可能会漏掉一些明显的东西。任何人都可以告诉我如何正确写入?
除非提供不同的超时值或心跳,否则实际上会有60000ms(60秒)的默认超时。我在10月份更新了_changes wiki page,并包含了我在代码中遇到的任何默认值。
设置心跳基本上意味着您将在客户端观察超时,即心跳周期没有换行意味着您肯定已经失去了连接。我相信如果有心跳,CouchDB会禁用超时检查。
在任何情况下,您都应该期望连接在某个时间点被关闭,并且代码为该条件。
这只是一个猜测,因为我对couchdb的连续执行或HttpUrlConnection实现不够了解。但似乎禁止两者的代码中的任何错误,如果您的java连接客户端的超时设置低于couchdb连续更改的默认心跳,那么连接可能会被java客户端终止。
只是一个想法。
您可以使用&heartbeat=1000
让couchdb每秒通过电线发送新的线路。这将保持您的连接打开,直到断开连接和/或CouchDB关闭。
但是你是对的,我也会期望连接不会关闭 - 好像conn.setReadTimeout(0);
也没有任何帮助。
我在这里打开了一个缺陷:https://issues.apache.org/jira/browse/COUCHDB-580 – Joscha 2009-11-26 11:48:22