net windows Kafka

來源:互聯網
上載者:User

標籤:strong   jvm   ted   turn   message   expected   重新命名   for   環境變數   

net windows Kafka 安裝與使用入門(入門筆記)完整解決方案請參考:

Setting Up and Running Apache Kafka on Windows OS

 

在環境搭建過程中遇到兩個問題,在這裡先列出來,以方便查詢:1. \Java\jre7\lib\ext\QTJava.zip was unexpected at this time. Process exited 解決方案:1.1 右鍵點擊“我的電腦” -> "進階系統設定" -> "環境變數"1.2 查看CLASSPATH的值裡有沒有包含QTJava.zip的路徑,如果有的話,把對應的路徑刪除,問題就解決了。 2. Missing `server‘ JVM (Java\jre7\bin\server\jvm--.dll.) 解決方案:2.1. 拷貝C:\Program Files\Java\jdk1.6.0\jre\bin\server2.2 粘貼到 C:\Program Files\Java\jre1.6.0\bin 

搭建環境

1. 安裝JDK

1.1 安裝檔案:http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html下載Server JRE.
1.2 安裝完成後需要添加以下的環境變數(右鍵點擊“我的電腦” -> "進階系統設定" -> "環境變數" ):

    • JAVA_HOME: C:\Program Files (x86)\Java\jre1.8.0_60(這個是預設安裝路徑,如果安裝過程中更改了安裝目錄,把更改後的路徑填上就行了)
    • PATH: 在現有的值後面添加"; %JAVA_HOME%\bin"

1.3 開啟cmd運行 "java -version" 查看當前系統Java的版本:

 

2. 安裝Zookeeper

Kafka的運行依賴於Zookeeper,所以在運行Kafka之前我們需要安裝並運行Zookeeper

2.1 下載安裝檔案: http://zookeeper.apache.org/releases.html2.2 解壓檔案(本文解壓到 G:\zookeeper-3.4.8)2.3 開啟G:\zookeeper-3.4.8\conf,把zoo_sample.cfg重新命名成zoo.cfg2.4 從文字編輯器裡開啟zoo.cfg2.5 把dataDir的值改成“:\zookeeper-3.4.8\data”2.6 添加如下系統變數:
    • ZOOKEEPER_HOME: G:\zookeeper-3.4.8
    • Path: 在現有的值後面添加 ";%ZOOKEEPER_HOME%\bin;"

2.7 運行Zookeeper: 開啟cmd然後執行

zkserver

3. 安裝並運行Kafka3.1 下載安裝檔案: http://kafka.apache.org/downloads.html3.2 解壓檔案(本文解壓到 G:\kafka_2.11-0.10.0.1)3.3 開啟G:\kafka_2.11-0.10.0.1\config3.4 從文字編輯器裡開啟 server.properties3.5 把 log.dirs的值改成 “G:\kafka_2.11-0.10.0.1\kafka-logs”3.6 開啟cmd3.7 進入kafka檔案目錄: cd /d G:\kafka_2.11-0.10.0.1\3.8 輸入並執行以開啟kafka:
.\bin\windows\kafka-server-start.bat .\config\server.properties

 

4. 建立topics4.1 開啟cmd 並進入G:\kafka_2.11-0.10.0.1\bin\windows4.2 建立一個topic:
kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

 

5. 開啟一個Producer:
cd /d G:\kafka_2.11-0.10.0.1\bin\windowskafka-console-producer.bat --broker-list localhost:9092 --topic test

 

6. 開啟一個Consumer:
cd /d G:\kafka_2.11-0.10.0.1\bin\windows
kafka-console-consumer.bat --zookeeper localhost:2181 --topic test
然後就可以在Producer控制台視窗輸入訊息了。在訊息輸入過後,很快Consumer視窗就會顯示出Producer發送的訊息:

 

 

至此,Kafka運行環境的搭建就完成了:-)

 

 

web管理方面(正式營運部署):

網上有人說 kafka manage

 

.net sdk方面:

有人建議:https://github.com/Microsoft/CSharpClient-for-Kafka (微軟提供的sdk,看了源碼個人感覺有些複雜)


還有 
kafka-net 這個感覺會簡單很多(看了源碼感覺一些Task寫法並不喜歡)

推薦:kafka-net 簡單易用些。

地址: https://github.com/Jroland/kafka-net

 

以上sdk 可以搜尋nuget 查看開源地址和最新release包,當然.net sdk 還有很多其他選擇。

 

個人開發工具(windows支援),windows 開發環境使用

kafkaTool

: http://www.kafkatool.com/download.html

 

 

kafka-net sdk使用demo

參考來源:http://www.cnblogs.com/Wulex/p/5619425.html

詳細請查看官方開源地址的demo: https://github.com/Jroland/kafka-net

KafkaProducer程式: 

class Program    {        static void Main(string[] args)        {            do            {                Produce(GetKafkaBroker(), getTopicName());                System.Threading.Thread.Sleep(3000);            } while (true);        }        private static void Produce(string broker, string topic)        {            var options = new KafkaOptions(new Uri(broker));            var router = new BrokerRouter(options);            var client = new Producer(router);            var currentDatetime =DateTime.Now;            var key = currentDatetime.Second.ToString();            var events = new[] { new Message("Hello World " + currentDatetime, key) };            client.SendMessageAsync(topic, events).Wait(1500);            Console.WriteLine("Produced: Key: {0}. Message: {1}", key, events[0].Value.ToUtf8String());            using (client) { }        }        private static string GetKafkaBroker()        {            string KafkaBroker = string.Empty;            const string kafkaBrokerKeyName = "KafkaBroker";            if (!ConfigurationManager.AppSettings.AllKeys.Contains(kafkaBrokerKeyName))            {                KafkaBroker = "http://localhost:9092";            }            else            {                KafkaBroker = ConfigurationManager.AppSettings[kafkaBrokerKeyName];            }            return KafkaBroker;        }        private static string getTopicName()        {            string TopicName = string.Empty;            const string topicNameKeyName = "Topic";            if (!ConfigurationManager.AppSettings.AllKeys.Contains(topicNameKeyName))            {                throw new Exception("Key \"" + topicNameKeyName + "\" not found in Config file -> configuration/AppSettings");            }            else            {                TopicName = ConfigurationManager.AppSettings[topicNameKeyName];            }            return TopicName;        }    }

4.KafkaConsumer程式:

class Program    {        static void Main(string[] args)        {            Consume(getKafkaBroker(), getTopicName());                    }        private static void Consume(string broker, string topic)        {               var options = new KafkaOptions(new Uri(broker));            var router = new BrokerRouter(options);            var consumer = new Consumer(new ConsumerOptions(topic, router));            //Consume returns a blocking IEnumerable (ie: never ending stream)            foreach (var message in consumer.Consume())            {                Console.WriteLine("Response: Partition {0},Offset {1} : {2}",                    message.Meta.PartitionId, message.Meta.Offset, message.Value.ToUtf8String());            }        }        private static string getKafkaBroker()        {            string KafkaBroker = string.Empty;            var KafkaBrokerKeyName = "KafkaBroker";            if (!ConfigurationManager.AppSettings.AllKeys.Contains(KafkaBrokerKeyName))            {                KafkaBroker = "http://localhost:9092";            }            else            {                KafkaBroker = ConfigurationManager.AppSettings[KafkaBrokerKeyName];            }            return KafkaBroker;        }        private static string getTopicName()        {            string TopicName = string.Empty;            var TopicNameKeyName = "Topic";            if (!ConfigurationManager.AppSettings.AllKeys.Contains(TopicNameKeyName))            {                throw new Exception("Key \"" + TopicNameKeyName + "\" not found in Config file -> configuration/AppSettings");            }            else            {                TopicName = ConfigurationManager.AppSettings[TopicNameKeyName];            }            return TopicName;        }    }

5.Consumer結果:

 

net windows Kafka

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.