2017-10-08 141 views
0

我有一個與2分區的源主題,我開始2卡夫流應用程序具有相同的application.id但不同的匯主題。卡夫卡流:從多個分區主題閱讀

1)2個應用程序實例是否會接收來自不同分區的數據?

2)如果其中一個應用程序被殺死,另一個實例是否會自動從兩個實例中消耗?

3)如何證明上述情況?

+0

看看入日誌。 Kafka Streams記錄分區和任務分配。 –

回答

1

Kafka Streams正在使用相同的消費者庫,因此行爲應該與您所描述的相符 - 如果您有2個應用程序,則每個應用程序都將從分配給它的分區中消耗,如果有一個被殺死,則活動將處理數據來自所有分區...

證明可以通過運行應用程序來實現 - 例如 - 在最簡單的情況下,只需打印用於所用數據的不同前綴並提交鍵值,以便您可以區分何時從一個分區轉到一個分區被髮送到另一個...

0

1)這兩個應用程序實例是否會從不同的分區接收數據?

是的。

2)如果其中一個應用程序被殺死,另一個實例是否會自動從兩個實例中消耗?

是的。 (但請記住,另一個實例現在可以將輸出數據發送到它自己的輸出數據,而不是原始實例的輸出主題。)

3)如何證明上述場景?

您可以檢查您的應用程序的日誌(卡夫卡流將記錄有關每個實例的主題/分區/流任務的信息),可以運行集成測試等

+0

感謝您的回覆!是否有可能運行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