第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Kafka Streams Shutdown Hook 和同一個 Stream

Kafka Streams Shutdown Hook 和同一個 Stream

動漫人物 2021-10-13 16:10:54
我的任務是拆除一個 Dev 環(huán)境并從廢料中重新設置它以驗證我們的 CI-CD 流程;唯一的問題是我搞砸了創(chuàng)建一個主題,因此 Kafka Streams 應用程序退出并出現(xiàn)錯誤。我深入研究并發(fā)現(xiàn)了問題并進行了糾正,但在深入研究時,我遇到了另一個奇怪的小問題。我實現(xiàn)了一個意外異常處理程序,如下所示:streams.setUncaughtExceptionHandler((t, e) -> {    logger.fatal("Caught unhandled Kafka Streams Exception:", e);    // Do some exception handling.    streams.close();    // Maybe do some more exception handling.    // Open a lock that is waiting after streams.start() call     // to let application exit normally    shutdownLatch.countDown();});問題是,如果應用程序在調(diào)用 KafkaStreams::close 時由于主題錯誤引發(fā)異常,則應用程序在嘗試調(diào)用 KafkaStreams::waitOnState 后似乎在 WindowsSelectorImpl::poll 中死鎖。我想這可能是與調(diào)用KafkaStreams ::接近異常處理程序內(nèi)部的問題,但我發(fā)現(xiàn)這個SO和評論馬蒂亞斯J.薩克斯認為說應該是確定調(diào)用KafkaStreams ::關(guān)閉在異常處理程序與告誡不從多個線程調(diào)用 KafkaStreams::close。問題是我想實現(xiàn)一個關(guān)閉鉤子來在請求時優(yōu)雅地終止 steams 應用程序,以及實現(xiàn) UnexpectedException 處理程序以在發(fā)生異常時優(yōu)雅地清理和終止。我想出了以下解決方案,在調(diào)用 close 之前檢查 KafkaStreams 狀態(tài),它確實有效,但似乎有點不確定,因為除了運行(可能是 Pending)之外,我還可以看到其他情況,我們希望確保 KafkaStreams::close它叫。Runtime.getRuntime().addShutdownHook(new Thread(() -> {    logger.fatal("Caught Shutdown request");    // Do some shutdown cleanup.    if (streams.state().isRunning())    {        If this hook is called due to the Main exiting after handling         an exception we don't want to call close again. It doesn't         cause any errors but logs that the application was closed         a second time.        streams.close(100L, TimeUnit.MILLISECONDS);    }    // Maybe do a little bit more clean up before system exits.    System.exit(0);}));streams.setUncaughtExceptionHandler((t, e) -> {    logger.fatal("Caught unhandled Kafka Streams Exception:", e);    // Do some exception handling.    if (streams.state().isRunning())    {        streams.close(100L, TimeUnit.MILLISECONDS);    }關(guān)于為什么在異常處理程序中調(diào)用 KafkaSteams:close 會導致此類麻煩的任何建議,或者如果有更好的方法同時實現(xiàn)關(guān)閉鉤子和異常處理程序,將不勝感激?
查看完整描述

1 回答

  • 1 回答
  • 0 關(guān)注
  • 197 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號