كيف تستخدم كاوتش دي بي تغيير الإخطارات التغييرات المستمرة من جافا؟

StackOverflow https://stackoverflow.com/questions/1640653

  •  08-07-2019
  •  | 
  •  

سؤال

وأنا أحاول أن استخدام كاوتش دي بي (مستمر) يغير API من جاوة وتجد أن بعد استنفاد قائمة التيار يتغير مجرى يبدو أن تكون مغلقة، لن يبقى مفتوحا الى الابد كما أنه من المفترض أن.

والرمز الذي أستخدمه هو أدناه. أتوقع أبدا الانقطاع عن حلقة في حين، ولكن لا بمجرد الانتهاء من التغييرات الموجودة حاليا قيد التدفق. أنا جديدة نسبيا على حد سواء كاوتش دي بي وجافا لذلك قد تكون في عداد المفقودين شيء واضح. يمكن لأي شخص أن تريني كيفية كتابة هذا صحيح؟

URL url = new URL("[path to database here]/_changes?feed=continuous";);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true); 
conn.setUseCaches(false); 
conn.setRequestProperty("Connection", "Keep-Alive"); 
conn.setRequestMethod("GET");
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while((line = reader.readLine()) != null){
    // do something with the line here
}
// Should never get here under normal circumstances
reader.close();
هل كانت مفيدة؟

المحلول

وهناك في الواقع المهلة الافتراضية من 60000ms (60 ثانية) إلا قيمة مهلة مختلفة أو يتم توفير ضربات القلب. I تحديث _changes صفحة ويكي في أكتوبر وتضمين أي افتراضات جئت عبر في القانون .

وضبط ضربات القلب يعني أساسا أن عليك أن تكون رصدا لمهلة في عميل، أي لا السطر الجديد للفترة ضربات القلب يعني أنك قد فقدت بالتأكيد الاتصال. أعتقد كاوتش دي بي تعطيل الاختيار مهلة لها إذا كان هناك ضربات القلب.

في أي حال، ربما يجب عليك تتوقع اتصال لتكون مغلقة عند نقطة معينة ورمز لهذا الشرط.

نصائح أخرى

ويمكنك استخدام &heartbeat=1000 للحصول على كاوتش دي بي ترسل خطوط جديدة عبر السلك كل ثانية. والتي تحافظ على الاتصال مفتوحة حتى تقوم بفصل و / أو كاوتش دي بي يحصل إيقاف.

ولكن على حق، وأود أيضا أن يتوقع منك أن الاتصال سوف يست قريبة - يبدو كما لو كان أيضا conn.setReadTimeout(0); لا يساعد أي شيء

وهذا هو مجرد تخمين منذ أنا لا أعرف ما يكفي عن تنفيذ كاوتش دي بي continuousfeed أو تنفيذ HttpUrlConnection. ولكن على ما يبدو لم تحدث أي أخطاء في رمز للاللذين إذا كان لدى العميل اتصال جافا بك تعيين مهلة أقل من ضربات القلب الافتراضي لتغييرات مستمرة كاوتش دي بي ثم الاتصال يمكن الحصول على إنهائها من قبل العميل جافا.

ومجرد التفكير.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top