簡體   English   中英

什么是 w.r.t 關閉/維護卡夫卡生產者中的連接的好策略

[英]What is a good strategy w.r.t closing/maintaining connections in kafka producers

我有一個接收消息並處理它們的隊列監聽器應用程序。 對於每條傳入消息,都會將一個事件發送到 Kafka 主題。 傳入消息的頻率因一天中的時間而異。

令我困惑的是:我什么時候應該關閉與 Producer 中的 Kafka 代理的連接(我正在使用 java 庫 - kafka-clients)。 這些是我的一些選擇:

  • 為每個請求創建一個新的生產者。 這似乎是一種開銷,尤其是在負載高的高峰時段

  • 為應用程序創建單個生產者,並通過將代理中的配置“connection.max.idle.ms”設置為高值(可能是應用程序保持空閑的最大估計時間?)來保持連接處於活動狀態。僅在以下情況下關閉連接應用程序已關閉。 這似乎比第一個選項更容易接受,但它仍然有一個缺點,即在應用程序的空閑時間(有時可能是幾個小時)保持連接打開

  • 創建一個生產者並允許它在最大空閑時間(默認 9 分鍾)后關閉與代理的連接。 在發送消息之前,檢查生產者連接是否存在,如果不存在則創建一個新的生產者。 這個選項對我來說聽起來不錯——空閑時關閉連接,有需求時創建一個新連接。 但是我以前沒有遇到過這個,我想知道它是否有一些缺點。 而且我在 API (KafkaProducer) 中看不到允許我檢查連接是否存在的方法

有沒有人遇到過這個問題? 你是怎么解決的?

謝謝。

我建議在整個應用程序中保留一個實例。

您可以創建一個次要心跳主題並每秒或每分鍾發送一條簡單消息,等等,這將使連接保持活動狀態......通過這種策略,我建議將該新主題的保留率降低到非常低或使其緊湊

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM