2009-10-28 3 views
6

私はJavaからcouchdb(continuous)変更APIを使用しようとしていますが、現在の変更のリストを使い果たした後、ストリームは閉じられているように見えます。JavaからCouchDB Change Notificationの変更をどのように使用しますか?

私が使用しているコードは以下のとおりです。私はwhileループから抜け落ちることはないと期待しますが、現在の既存の変更がストリーミングされるとすぐに行います。私はcouchdbとJavaの両方に比較的新しいので、何かが明らかでないかもしれません。誰も私にこれを正しく書く方法を教えてもらえますか?

​​

答えて

7

異なるタイムアウト値またはハートビートが指定されていない限り、実際にはデフォルトのタイムアウトは60000ms(60秒)です。私は_changes wiki pageを10月に更新し、コードに出てきたデフォルトを含めました。

基本的にハートビートを設定するということは、クライアントのタイムアウトを監視することです。つまり、ハートビート期間の改行がなくても、接続が失われたことを意味します。私はCouchDBがハートビートがある場合、タイムアウトチェックを無効にすると信じています。

いずれにしても、ある時点で接続が切断され、その状態が発生している可能性があります。

0

これは、couchdbのcontinuousfeed実装またはHttpUrlConnection実装について十分に知りませんので、これは単なる推測です。しかし、あなたのjava接続クライアントがcouchdb連続変更のためのデフォルトのハートビートよりもタイムアウトを低く設定していると、接続がJavaクライアントによって終了する可能性があるという2つのコードのバグを排除しているようです。

単なる考えです。

3

&heartbeat=1000を使用すると、1秒ごとに新しい行をcouchdbに送信できます。切断するか、CouchDBがシャットダウンするまで、接続は開いたままになります。

しかし、あなたは正しいです、私はまた、接続が閉じないことを期待していた - 同様にconn.setReadTimeout(0);が何か助けにならないように見えます。

+0

ここで問題が発生しました:https://issues.apache.org/jira/browse/COUCHDB-580 – Joscha

関連する問題