Win10安装kafka并用C#调用

kafka安装

jdk、kafka版本如下,zookeeper使用kafka自带版本

安装包下载位置:https://download.csdn.net/download/henreash/90087368 (赚点csdn下载资源分)

安装jdk后,解压kafka压缩包,修改配置文件:

kafka_2.13-3.9.0\config\zookeeper.properties内修改:dataDir=D:/Kafka/zookeeper/data

kafka_2.13-3.9.0\config\server.properties内修改:log.dirs=D:/Kafka/kafka-logs

在目录内创建批处理文件,启动zookeeper和kafka:

kfk.cmd内容:call bin/windows/kafka-server-start.bat config/server.properties

zk.bat内容:call bin/windows/zookeeper-server-start.bat config/zookeeper.properties

双击zk.bat、kfk.cmd启动zookeeper和kafka

kafka-manager安装

将kafka-manager2解压到d盘,注意目录结构不能太深,否则启动报错。

修改config\application.conf,修改节点kafka-manager.zkhosts指向zookeeper

kafka-manager.zkhosts="192.168.0.109:2181"

创建start.bat批处理文件,内容:.\bin\kafka-manager.bat

双击启动kafka-manager。

打开浏览器,输入地址:http://localhost:9000/

点击Cluster菜单,创建一个默认Cluster Test001;

kafka环境配置完毕。

C#调用

创建C#8项目,在nuget中下载Confluent.Kafka(2.6.1),如下代码进行消息发布和订阅。

cs 复制代码
       private async void simpleButton2_Click(object sender, EventArgs e)
       {
           var config = new ProducerConfig 
           { 
               BootstrapServers = "localhost:9092"
           };
           using (var producer = new ProducerBuilder<Null, string>(config).Build())
           {
               var dr = await producer.ProduceAsync("test-topic", new Message<Null, string> { Value = "hello,world" });
               Debug.WriteLine($"Delivered '{dr.Value}' to '{dr.TopicPartitionOffset}'");
           }

       }

       private void simpleButton3_Click(object sender, EventArgs e)
       {
           Task.Factory.StartNew(() => {
               var config = new ConsumerConfig
               {
                   GroupId = "test-consumer-group",
                   BootstrapServers = "localhost:9092",
                   AutoOffsetReset = AutoOffsetReset.Earliest
               };
               var cts = new CancellationTokenSource();
               using (var consumer = new ConsumerBuilder<Ignore, string>(config).Build())
               {
                   consumer.Subscribe("test-topic");
                   
                   try
                   {
                       while (true)
                       {
                           try
                           {
                               var cr = consumer.Consume(cts.Token);
                               Debug.WriteLine($"Consumed message '{cr.Value}' at: '{cr.TopicPartitionOffset}'.");
                           }
                           catch (Exception ex)
                           {
                               Console.WriteLine(ex);
                           }
                       }
                   }
                   catch (Exception ex2)
                   {
                       Console.WriteLine(ex2);
                   }
               }
           });

       }

执行后kafka-manager界面如下图:

相关推荐
每天一道题1 小时前
分布式锁真的安全吗?从 Redis 锁、Lease 到 Fencing Token
redis·分布式·安全
小O的算法实验室5 小时前
IEEE TAES,多无人机通信故障下的分布式任务分配与压制干扰
分布式
Deng桑21 小时前
分布式锁与幂等
分布式
Flynn Liang1 天前
物联网时序数据乱序问题全链路治理:从设备到存储的五层实战(附 Flink/Kafka/IoTDB 配置级代码)
flink·kafka·iot·iotdb·emqx·乱序·时序数据
wifi___1 天前
Redis分布式锁
数据库·redis·分布式
方方洛1 天前
ray教程-15-RayServe与LLM服务
人工智能·分布式·机器学习
m0_639906941 天前
MySQL 实现分布式锁:悲观锁、乐观锁、唯一索引锁
数据库·分布式·mysql
T量子永生1 天前
Android SISO 分布式编译集群配置方案
android·分布式·云计算·源代码管理
starzy19902 天前
Kafka响应发送:字节是怎么真正写回客户端的
大数据·kafka
KaiwuDB2 天前
KaiwuDB 分布式集群扩缩容,从原理到完整操作踩坑总结
运维·数据库·分布式