2016-10-05 41 views
0

我正試圖從0.9.0.0遷移到KafkaClient 0.10.0.1。該代碼在0.9.0.0的生產環境中工作正常。現在開發平臺中的相同代碼拋出異常,當消費者以下列異常啓動時: javax.servlet.ServletException:java.lang.NoSuchMethodError:org/apache/kafka/clients/consumer/KafkaConsumer.subscribe(Ljava/util/List; )V(從文件加載:/home/vcap/app/wlp/usr/shared/config/lib/global/kafka-clients-0.10.0.1.jar by [email protected])從類com.ibm.b2b.msghub.helper.AbstractB2BConsumer調用(從文件加載:/home/vcap/app/wlp/usr/shared/config/lib/global/B2BBlueMixLib-1.0.jar by com.ibm.ws. [email protected])。在Kafka Consumer中獲取NoSuchMethodError v0.10.0.1

馬杜

回答

1

客戶端API已卡夫卡0.9和0.10之間略有改變。

KafkaConsumer.subscribe()的定義已更改。第一個參數現在是類型Collection而不是List。

這樣做是爲了使API更加一致,因爲現在大多數(所有?)調用都採用Collection對象,而在這之前它是幾種類型的混合。

+0

感謝Mickael的迴應。我嘗試將這個列表投到收藏。它不起作用。所以我使用了使用Pattern對象的subscribe方法。我正在面對同樣的問題爲ConsumerRebalanceListener,我正在實施kafkaConsumer.seekToEnd方法onPartitionsAssigned \t \t Collection cur = Arrays.asList(partition); \t kafkaConsumer.seekToEnd(cur); – Madhu

+0

對於上述代碼,我收到編譯錯誤:[錯誤]需要:org.apache.kafka.common.TopicPartition [] [錯誤]找到:java.util.Collection [錯誤]原因:可變參數不匹配; java.util.Collection 不能轉換爲org.apache.kafka.common.TopicPartition – Madhu

+0

列表已經是一個集合,因此不需要投射。它看起來更像是一個依賴性問題。無論您是針對Kafka的錯誤級別構建的,還是您的應用服務器上都有錯誤的Jar版本。 與seekToEnd()相同。它現在需要一個集合。但從你的輸出看起來它期待着舊的類型(TopicPartition varargs)! –

相關問題