簡體   English   中英

使 Kafka 主題中的消息過期

[英]Expiring the messages in Kafka Topic

我們在我們的開發環境中使用 Apache Kafka 執行負載測試。
在我們安裝了 confluent kafka 的 Linux 盒子中,空間有限,因此為了執行負載測試,我們在主題中添加了retention.ms 屬性。

想法是在消息被消費者消費后從主題中刪除。

我努力了

kafka-topics --zookeeper localhost:2181 --alter --topic myTopic --config retention.ms=10000

它不起作用,因此我們重新創建了主題並嘗試了以下選項。

kafka-configs --alter --zookeeper localhost:2181 --entity-type topics --entity-name myTopic -add-config retention.ms=10000 

在運行該過程幾個小時后,由於空間限制,代理將關閉。

我可以從主題以及代理的角度嘗試哪些其他選項,以使消息可靠地過期並收回磁盤空間以進行長時間運行的負載測試。

除了時間之外,您還可以根據字節大小定義刪除策略。

主題配置稱為retention.bytes ,在文檔中描述為:

如果我們使用“刪除”保留策略,此配置控制分區(由日志段組成)在我們丟棄舊日志段以釋放空間之前可以增長到的最大大小。 默認情況下沒有大小限制,只有時間限制。 由於此限制是在分區級別強制執行的,因此將其乘以分區數以計算主題保留(以字節為單位)。

您可以將它與retention.ms一起設置,無論首先達到什么限制(字節或時間),都會觸發清理。

這可能是因為您的日志清理線程可能尚未觸發。

您沒有提供太多關於這些主題積累了多少數據的信息。 但它可能不在 GB 中。

日志清理線程將清理已完成的日志段。 段的默認大小為 1 GB。

如果您期望巨大的負載,請將您的主題配置 segment.bytes 修改為較小的值。

或根據您的要求將配置 segment.ms 修改為 1 分鍾或 10 分鍾。

這應該會創建段,並根據您的日志保留時間,清理線程將清理較舊的已完成段。

暫無
暫無

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

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