Chúng ta hãy sắp xếp chúng theo thứ tự :)
1 - Khi nhà sản xuất đang tạo một tin nhắn - Nó sẽ chỉ định chủ đề mà nó muốn gửi tin nhắn đến, đúng không? Nó có quan tâm đến phân vùng không?
Theo mặc định, nhà sản xuất không quan tâm đến việc phân vùng. Bạn có tùy chọn sử dụng trình phân vùng tùy chỉnh để kiểm soát tốt hơn, nhưng đó hoàn toàn là tùy chọn.
2 - Khi một thuê bao đang chạy - Nó có chỉ định id nhóm của nó để nó có thể là một phần của cụm người tiêu dùng cùng chủ đề hoặc một số chủ đề mà nhóm người tiêu dùng này quan tâm không?
Có, người tiêu dùng tham gia (hoặc tạo nếu họ ở một mình) một nhóm người tiêu dùng để chia sẻ tải. Không có hai người tiêu dùng trong cùng một nhóm sẽ nhận được cùng một thông điệp.
3 - Mỗi nhóm người tiêu dùng có một phân vùng tương ứng trên nhà môi giới hay mỗi người tiêu dùng có một phân vùng không?
Cũng không. Tất cả người tiêu dùng trong một nhóm người tiêu dùng được gán một tập hợp các phân vùng, theo hai điều kiện: không có hai người tiêu dùng nào trong cùng một nhóm có bất kỳ phân vùng chung nào - và toàn bộ nhóm người tiêu dùng được gán mọi phân vùng hiện có.
4 - Các phân vùng được tạo bởi nhà môi giới, do đó không phải là mối quan tâm của người tiêu dùng?
Họ không, nhưng bạn có thể thấy từ 3 người hoàn toàn vô dụng khi có nhiều người tiêu dùng hơn các phân vùng hiện có, do đó, mức độ song song tối đa của bạn để tiêu thụ.
5 - Vì đây là hàng đợi có phần bù cho mỗi phân vùng, nên người tiêu dùng có trách nhiệm chỉ định thư nào muốn đọc không? Có cần phải lưu trạng thái của nó?
Có, người tiêu dùng lưu một phần bù cho mỗi chủ đề trên mỗi phân vùng. Điều này hoàn toàn được xử lý bởi Kafka, không phải lo lắng về nó.
6 - Điều gì xảy ra khi một tin nhắn bị xóa khỏi hàng đợi? - Ví dụ: Thời gian lưu là 3 giờ, sau đó thời gian trôi qua, phần bù được xử lý ở cả hai bên như thế nào?
Nếu người tiêu dùng từng yêu cầu một phần bù không có sẵn cho một phân vùng trên các nhà môi giới (ví dụ: do xóa), thì nó sẽ chuyển sang chế độ lỗi và cuối cùng tự đặt lại cho phân vùng này thành tin nhắn mới nhất hoặc cũ nhất có sẵn (tùy thuộc vào giá trị cấu hình auto.offset.reset) và tiếp tục hoạt động.