2016-12-08 14 views
5

Tôi đang làm việc với Kafka và cố gắng tiêu thụ dữ liệu từ nó. Từ dòng dưới đây, tôi có thể thăm dò dữ liệu từ Kafka.kafka thời gian chờ bỏ phiếu của người tiêu dùng

while (true) { 
    ConsumerRecords<byte[], <byte[]> records = consumer.poll(Long.MAX_VALUE); 
    for (ConsumerRecord<byte[], <byte[]> record : records) { 
     // retrieve data 
    } 
    } 

Câu hỏi của tôi là lợi ích Tôi nhận được bằng cách cung cấp Long.MAX_VALUE như thời gian chờ so với nếu tôi cung cấp 200 như thời gian chờ là gì. Thực hành tốt nhất cho hệ thống sẽ chạy sản xuất là gì.

Bất cứ ai có thể giải thích cho tôi sự khác biệt về thời gian chờ cao và thời gian chờ thấp và nên được sử dụng trong hệ thống sản xuất?

Trả lời

2

Đặt MAX_VALUE là loại tiêu thụ tin nhắn đồng bộ, chờ cho đến khi chúng tôi nhận được nội dung nào đó được trả về từ cuộc thăm dò, trong khi cài đặt ở giá trị thấp hơn sẽ cho bạn cơ hội quyết định làm điều gì khác ngoài chờ đợi. Mà nên được sử dụng phụ thuộc vào kịch bản thực tế của bạn.

+0

Cảm ơn bạn đã giải thích. Chúng ta có thể làm gì nếu chúng ta đặt giá trị thấp hơn thay vì chờ đợi? Tôi không thể nghĩ ra bất kỳ kịch bản nào cho việc này. Bạn có thể giúp tôi hiểu những điều chúng ta có thể làm hay chúng ta nên làm trong hệ thống sản xuất nếu chúng ta đặt ra giá trị thời gian chờ thấp hơn? Và những gì bạn đề nghị? – john

+0

Nếu bạn muốn thoát khỏi vòng lặp bằng cách sử dụng cờ hoặc chỉ cần thực hiện một số tác vụ định kỳ bên ngoài vòng lặp để thực thi. KafkaConsumer cung cấp phương pháp đánh thức để làm gián đoạn chuỗi người tiêu dùng nên bạn vẫn có thể đạt được điều này ngay cả khi sử dụng thời gian chờ bỏ phiếu dài. – amethystic

+0

Vâng, nhưng câu hỏi của tôi là những gì mọi người làm thay vì chờ đợi trên thời gian chờ lâu? Có trường hợp nào mọi người làm việc không? – john

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