2015-02-18 27 views
20

Tôi đang sử dụng apache kafka để sản xuất và tiêu thụ một tệp có dung lượng 5GB. Tôi muốn biết nếu có một cách mà thông điệp từ chủ đề được tự động loại bỏ sau khi nó được tiêu thụ. Tôi có cách nào để theo dõi tin nhắn được tiêu thụ không? Tôi không muốn xóa nó bằng tay.Xóa tin nhắn sau khi tiêu thụ nó trong KAFKA

Trả lời

22

Trong Kafka, trách nhiệm của những gì đã được tiêu thụ là trách nhiệm của người tiêu dùng và đây cũng là một trong những lý do chính khiến Kafka có khả năng mở rộng ngang lớn như vậy.

Sử dụng API người tiêu dùng cấp cao sẽ tự động thực hiện việc này cho bạn bằng cách cam kết bù trừ tiêu thụ trong Zookeeper (hoặc tùy chọn cấu hình gần đây đang được chủ đề Kafka sử dụng để theo dõi tin nhắn được tiêu thụ).

API người tiêu dùng đơn giản giúp bạn giải quyết cách thức và vị trí tự mình theo dõi các thông điệp đã tiêu thụ.

Việc xóa thư trong Kafka được thực hiện tự động bằng cách chỉ định thời gian lưu cho một chủ đề hoặc bằng cách xác định hạn ngạch đĩa cho trường hợp của bạn một tệp 5 GB, tệp này sẽ bị xóa sau khoảng thời gian lưu giữ mà bạn xác định được thông qua, bất kể nó đã được tiêu thụ hay chưa.

6

Theo kiến ​​thức của tôi, bạn có thể Xóa dữ liệu được tiêu thụ tạo thành nhật ký bằng cách giảm thời gian lưu trữ. Thời gian mặc định cho nhật ký được đặt cho 168 giờ và sau đó Dữ liệu được tự động xóa khỏi Kafka-Topic mà bạn đã tạo. Vì vậy, đề nghị của tôi là để giảm đi đến các server.properties mà nằm trong thư mục cấu hình và thay đổi đến một thời gian tối thiểu. do đó, họ không có dữ liệu sau khoảng thời gian cụ thể mà bạn đã đặt cho log.retention.hours. Do đó, vấn đề của bạn sẽ được giải quyết.

log.retention.hours = 168

Giữ mã hóa

Các vấn đề liên quan