一、環境準備
1、jdk 8+
2、zookeeper
3、kafka
說明:在kafka較新版本中已經集成了zookeeper,所以不用單獨安裝zookeeper,只需要在kafka文件目錄中啓動zookeeper即可
二、下載地址
https://kafka.apache.org/downloads
三、部署
1、啓動zookeeper
-- 啓動
./bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
-- 查看是否啓動成功
ps -ef | grep zoo
2、進入解壓的kafka目錄,修改/config/kafka-server的配置文件
vi config/server.properties
-- 重點配置節點說明
listeners=PLAINTEXT://localhost:9092 -- 將localhost修改爲主機ip
log.dirs=/bigdata/kafka/logs-1 -- 默認不修改也可
3、使用kafka-server-start.sh,啓動kafka服務
./bin/kafka-server-start.sh config/server.properties
四、使用客戶端kafka tools連接kafka
客戶端下載地址:https://www.kafkatool.com/download.html
關於客戶端如何使用可查看:https://www.cnblogs.com/frankdeng/p/9452982.html
五、kafka實戰簡單使用
NuGet:Confluent.Kafka
1、新建.Net Core控制檯項目,代碼如下:
static void Main(string[] args) { // 發送消息 var producerConfig = new ProducerConfig { BootstrapServers = "192.168.140.131:9092", MessageTimeoutMs = 50000 }; var builder = new ProducerBuilder<string, string>(producerConfig); using (var producer = builder.Build()) { var data = new { key = "1", value = "001" }; var json = JsonConvert.SerializeObject(data); var dr = producer.ProduceAsync("order", new Message<string, string> { Key = "order", Value = json }).GetAwaiter().GetResult(); Console.WriteLine($"發送事件{dr.Value}到{dr.TopicPartitionOffset}成功"); } // 消費消息 var consumerConfig = new ConsumerConfig { BootstrapServers = "192.168.140.131:9092", AutoOffsetReset=AutoOffsetReset.Earliest, GroupId="1111", // 自定義 EnableAutoCommit=true }; var consumerBuilder = new ConsumerBuilder<string, string>(consumerConfig); using (var consumer = consumerBuilder.Build()) { // 1、訂閱 consumer.Subscribe("order"); while (true) { try { // 2、消費(自動確認) var result = consumer.Consume(); // 3、業務邏輯 string key = result.Key; string value = result.Value; Console.WriteLine($"創建商品:Key:{key}"); Console.WriteLine($"創建商品:Order:{value}"); consumer.Commit(result); } catch (Exception e) { Console.WriteLine($"異常:Order:{e}"); } } } }
2、使用kafka客戶端查看消息投遞