目標:我想從java cleint發送消息給kafka。
它一直是一個痛苦..
讓我簡單介紹一下。無法連接到我的虛擬機從客戶端kafka
- 我在centos虛擬機上安裝了kafka。
- 我運行了它附帶的動物園管理員,服務器,生產者和客戶端的所有默認屬性文件。
我已成功發送和接收消息。 - 我有一臺從我的電腦到zookeeper(2181)端口和虛擬機上的kafka服務器(9092)端口的telnet連接。
現在,我想編寫Java代碼發送消息到主題。 我用的是例如,從快速啓動在現場:
Properties props = new Properties();
props.put("zk.connect", "http://XX.XX.XX.XX:2181"); // where X is the ip
props.put("serializer.class", "kafka.serializer.StringEncoder");
producer = new Producer<String, String>(new ProducerConfig(props));
,並與以下excetptions第四行失敗:
kafka.common.FailedToSendMessageException: Failed to send messages after 3 tries
和
rg.I0Itec.zkclient.exception.ZkTimeoutException: Unable to connect to zookeeper server within timeout: 400
問題。
例外。
不好的參數:
在kafka快速啓動的例子中,我看到它只需要zk.connect, serializer.class.,當我運行它時,它需要在Producer的構造函數中聲明metadata.broker.list。
是嗎?所以我感覺到kafka服務器的ip和端口。 ?
和順便說一句 - 是zk.connect或動物園管理員連接ZkTimeoutException:無法連接到超時時間內服務器的ZooKeeper:400個行家不好版本
我去到現場,我看到最新的版本是kafka_2 .8.0-0.8.0。
問題1 - 我使用intelij下載它(我認爲它是maven central) -
我得到所有相關的jar文件 - 只有kafka jar文件是空的(僅包含manifest文件)。問題2 - 有更晚的版本,然後在網站上。他們是否正式。
什麼辦法,我下載org.apache.kafka:kafka_2.10:0.8.0使用Wireshark的我看到三個SYN ACK &(三重握手)比,然後FYN & ACK
權之後。在動物園管理員的日誌中,我看到以下內容 [2014-02-27 01:43:42,127]警告EndOfStreamException:無法從客戶端會話ID 0x0讀取其他數據,可能客戶端已關閉套接字
(org.apache.zookeeper。 server.NIOServerCnxn)
這意味着我關閉了連接。爲什麼?
我只是偶然發現了這個問題,經過數小時的挖掘,你的文章幫助了我。抱歉提出一箇舊帖子,但只想說謝謝! –