我有一個與2分區的源主題,我開始2卡夫流應用程序具有相同的application.id但不同的匯主題。卡夫卡流:從多個分區主題閱讀
1)2個應用程序實例是否會接收來自不同分區的數據?
2)如果其中一個應用程序被殺死,另一個實例是否會自動從兩個實例中消耗?
3)如何證明上述情況?
我有一個與2分區的源主題,我開始2卡夫流應用程序具有相同的application.id但不同的匯主題。卡夫卡流:從多個分區主題閱讀
1)2個應用程序實例是否會接收來自不同分區的數據?
2)如果其中一個應用程序被殺死,另一個實例是否會自動從兩個實例中消耗?
3)如何證明上述情況?
Kafka Streams正在使用相同的消費者庫,因此行爲應該與您所描述的相符 - 如果您有2個應用程序,則每個應用程序都將從分配給它的分區中消耗,如果有一個被殺死,則活動將處理數據來自所有分區...
證明可以通過運行應用程序來實現 - 例如 - 在最簡單的情況下,只需打印用於所用數據的不同前綴並提交鍵值,以便您可以區分何時從一個分區轉到一個分區被髮送到另一個...
1)這兩個應用程序實例是否會從不同的分區接收數據?
是的。
2)如果其中一個應用程序被殺死,另一個實例是否會自動從兩個實例中消耗?
是的。 (但請記住,另一個實例現在可以將輸出數據發送到它自己的輸出數據,而不是原始實例的輸出主題。)
3)如何證明上述場景?
您可以檢查您的應用程序的日誌(卡夫卡流將記錄有關每個實例的主題/分區/流任務的信息),可以運行集成測試等
感謝您的回覆!是否有可能運行2個不同的流應用程序具有相同的應用程序ID但2個不同的狀態存儲名稱?當我提供不同的狀態存儲名稱時,我得到以下其中一個流應用程序:'DEBUG [.test.joins-08294d46-896a-4298-99da-c5a10f7969bb-StreamThread-1]主題元數據獲取包含錯誤:{.test。 joins.-state_store_name_one-changelog = UNKNOWN_TOPIC_OR_PARTITION}(org.apache.kafka.clients.consumer.internals.Fetcher)' – NoName
看看入日誌。 Kafka Streams記錄分區和任務分配。 –