Khi xác định cấu trúc liên kết trong các luồng kafka, một cửa hàng nhà nước toàn cầu có thể được thêm vào. Nó sẽ cần một chủ đề nguồn cũng như a ProcessorSupplier
. Bộ xử lý nhận các bản ghi và về mặt lý thuyết có thể chuyển đổi chúng trước khi thêm chúng vào cửa hàng. Nhưng trong trường hợp khôi phục, các bản ghi được chèn trực tiếp từ chủ đề nguồn (changelog) vào kho lưu trữ trạng thái toàn cầu, bỏ qua chuyển đổi cuối cùng được thực hiện trong bộ xử lý.
+-------------+ +-------------+ +---------------+
| | | | | global |
|source topic -------------> processor +--------------> state |
|(changelog) | | | | store |
+-------------+ +-------------+ +---------------+
| ^
| |
+---------------------------------------------------------+
record directly inserted during restoration
StreamsBuilder # addGlobalStore (StoreBuilder storeBuilder, String topic, Consumed đã tiêu thụ, ProcessorSupplier stateUpdateSupplier) Thêm StateStore toàn cầu vào cấu trúc liên kết.
Theo tài liệu
LƯU Ý: bạn không nên sử dụng Bộ xử lý để chèn các bản ghi đã chuyển đổi vào cửa hàng trạng thái toàn cầu . Cửa hàng này sử dụng chủ đề nguồn dưới dạng thay đổi và trong quá trình khôi phục sẽ chèn các bản ghi trực tiếp từ nguồn . Bộ xử lý này nên được sử dụng để giữ cho StateStore được cập nhật.
Song song với lỗi lớn hiện đang mở trên trình theo dõi lỗi kafka: Bộ xử lý tùy chỉnh KAFKA-7663 được cung cấp trên addGlobalStore không được sử dụng khi khôi phục trạng thái từ chủ đề giải thích chính xác những gì được nêu trong tài liệu, nhưng dường như là một lỗi được chấp nhận.
Tôi tự hỏi liệu KAFKA-7663 có thực sự là một lỗi hay không. Theo tài liệu, nó dường như đã được thiết kế như thế này, trong trường hợp đó tôi phải vật lộn để hiểu trường hợp sử dụng.
Ai đó có thể giải thích các trường hợp sử dụng chính của API cấp thấp này không? Điều duy nhất tôi có thể nghĩ là xử lý các tác dụng phụ, ví dụ như thực hiện một số thao tác ghi nhật ký trong bộ xử lý.
Câu hỏi thưởng: Nếu chủ đề nguồn đóng vai trò là thay đổi của cửa hàng toàn cầu, khi một bản ghi bị xóa khỏi chủ đề vì việc lưu giữ đã hết hạn, liệu nó có bị xóa khỏi cửa hàng nhà nước toàn cầu không? Hoặc việc loại bỏ sẽ chỉ diễn ra trong cửa hàng sau khi phục hồi toàn bộ cửa hàng từ changelog.