安裝
windows服務器上安裝JDK,kafka以及zookeeper。
安裝JDK
JDK下載路徑
安裝完成後需要添加以下的環境變量(右鍵點擊“我的電腦” -> “高級系統設置” -> “環境變量” ):
C:\Program Files\Java\jdk-14\bin(你的安裝目錄)
打開cmd運行 “java -version” 查看當前系統Java的版本,測試是否安裝完成。
安裝zookeeper
Kafka的運行依賴於Zookeeper,所以在運行Kafka之前我們需要安裝並運行Zookeeper
下載zookeeper
主要是下載Bin文件的版本,apache-zookeeper-3.6.0-bin.tar.gz
下載完成解壓文件
打開zookeeper-3.4.13\conf,把zoo_sample.cfg重命名成zoo.cfg
從文本編輯器裏打開zoo.cfg
把dataDir的值改成“./zookeeper-3.4.13/data”
添加環境變量:
C:\Program Files\apache-zookeeper-3.6.0\bin(你的解壓到的目錄)
進入目錄C:\Program Files\apache-zookeeper-3.6.0\bin,文本編輯zkEnv.cmd,添加JAVA_HOME變量後保存退出。
set JAVA_HOME=C:\Program Files\Java\jdk-14(前面安裝JDK的目錄)
打開cmd然後執行 zkserver,掛着不要關閉。
安裝kafka
下載kafka
解壓文件,注意解壓的目錄不能含有中文和空格
進入kafka的目錄config
從文本編輯器裏打開 server.properties
把 log.dirs的值改成 “./logs”
打開cmd進入kafka文件目錄: cd C:\kafka_2.11-2.4.1(kafka目錄)
輸入並執行: .\bin\windows\kafka-server-start.bat .\config\server.properties
掛着不要關閉。
運行kafka
創建topic
cmd進入kafka目錄,執行以下代碼創建一個topic:
kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
創建生產者
cmd進入kafka目錄,執行以下代碼創建一個producer
kafka-console-producer.bat --broker-list localhost:9092 --topic test
創建消費者
cmd進入kafka目錄,執行以下代碼創建一個consumer
kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning
最後測試如圖所示
NET簡單操作kafka
新建兩個項目,一個kafka服務端用於發送消息,一個kafka客戶端用於訂閱消息
打開NuGet,搜索安裝kafka-net-core
服務端
using KafkaNet;
using KafkaNet.Model;
using KafkaNet.Protocol;
using System;
namespace KafkaServer
{
class Program
{
static void Main(string[] args)
{
const string topicName = "test";
var options = new KafkaOptions(new Uri("http://localhost:9092"));
//創建一個生產者發消息
using (var producer = new Producer(new BrokerRouter(options)){ BatchSize = 100, BatchDelayTime = TimeSpan.FromMilliseconds(2000) })
{
while (true)
{
var message = Console.ReadLine();
if (message == "quit") break;
if (!string.IsNullOrEmpty(message))
{
producer.SendMessageAsync(topicName, new[] { new Message(message) });
}
}
}
}
}
}
客戶端
using KafkaNet;
using KafkaNet.Common;
using KafkaNet.Model;
using System;
using System.Threading.Tasks;
namespace KafkaClient
{
class Program
{
static void Main(string[] args)
{
const string topicName = "test";
var options = new KafkaOptions(new Uri("http://localhost:9092"));
Task.Run(() =>
{
//創建一個消費者
var consumer = new Consumer(new ConsumerOptions(topicName, new BrokerRouter(options)));
foreach (var data in consumer.Consume())
{
Console.WriteLine("Response: PartitionId={0},Offset={1} :Value={2}", data.Meta.PartitionId, data.Meta.Offset, data.Value.ToUtf8String());
}
});
Console.ReadLine();
}
}
}
運行測試結果: