2017-03-07 82 views
2

我正在尋找關於如何在開發人員&集成測試環境中設置和運行Apache Kafka的建議和指針。爲開發人員/集成測試環境設置Apache Kafka

我想避免在每個開發人員的機器上手動下載和設置整個軟件包,並且找到一種在集成測試時自動啓動節點的簡單方法。

是否有某種嵌入式Kafka用於開發/集成測試目的(想想爲避免成熟RDBMS的Java開發人員考慮H2並行)?

我必須訴諸某種流浪者解決方案嗎?順便說一下,我發現了以下有趣的Gist:https://gist.github.com/svanellewee/8d978db827a860186569,但它需要設置Vagrant + VirtualBox ...

回答

1

是否有某種嵌入式卡夫卡的用於開發/集成測試的目的

卡夫卡實際上包括測試設備,讓您運行嵌入式卡夫卡集羣。

更新2017年3月13日:您可以通過添加相關的行家文物到您的構建:

<dependency> 
    <groupId>org.apache.kafka</groupId> 
    <artifactId>kafka-streams</artifactId> 
    <!-- Replace with desired Kafka version. --> 
    <version>0.10.2.0</version> 
    <classifier>test</classifier> 
    <scope>test</scope> 
</dependency> 

請注意,雖然,截至2017年3月,卡夫卡項目還沒有確定的「合同」上面的測試設施。例如,不保證未來版本的測試設施將與舊版本向後兼容。

下面的指針將會很有幫助編寫測試:

我想避免手動下載和安裝全包上的每個開發者的機器和還可以找到一種簡單的方法來在進行集成測試時自動啓動節點。

以上可能是最簡單的,如果您的需求被覆蓋,因爲它融合到一個現有的開發/測試過程與工具,如maven,gradle或sbt。

但是,如果您需要執行更先進的測試 - 如有意拿下卡夫卡經紀人中途來驗證您的應用程序生存局部中斷,例如 - 你可能想看一看:

1

我覺得KafkaUnit是最接近H2的東西。你可以在這裏找到它(https://github.com/chbatey/kafka-unit)。 或者只是通過

<dependency> <groupId>info.batey.kafka</groupId> <artifactId>kafka-unit</artifactId> <version>0.6</version> </dependency>

工程使用單位/集成的測試都在同一個JVM,類似於收藏家Testingserver。

+1

只是爲了在扔可選擇性e(儘管從外觀上看,我認爲KafkaUnit使用起來會更舒適):SchemaRegistry代碼包含[classes](https://github.com/confluentinc/schema-registry/blob/master/core/src/test /java/io/confluent/kafka/schemaregistry/ClusterTestHarness.java),它允許你創建嵌入的Kafka實例。這個「問題」是,這些測試源駐留在測試源中,匯合不會發布測試瓶,因此您必須自己構建一個測試罐,或者手動將相關文件導入到項目中。 –

+0

非常感謝你們對這個有關測試的建議。現在您對簡化本地開發人員工作站設置有任何想法,即避免在每個開發人員的工作站上手動設置Kafka?認爲開發/本地設置... – balteo

+1

@balteo我只能說我自己,但我只是在集成測試中使用的是一個bash腳本,啓動Kafka + ZK並捕獲一個殺死兩者的函數。 爲什麼就不能有地方查了腳本,做: wget的卡夫卡(也許喜歡〜/ .kafka只運行下載如果文件夾丟失) 開始飼養員 開始卡夫卡 –