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界面如下图:

相关推荐
ACP广源盛1392462567316 小时前
DeepSeek‑V4‑Flash 公测@ACP#昇腾 950 国产算力组合落地,国产 PCIe 交换芯片 IX9104 有哪些硬件机会
大数据·数据库·人工智能·分布式·单片机·嵌入式硬件·microsoft
玉鸯17 小时前
多 Agent 并行时如何保证状态一致性?
分布式·python·agent
CodeHackerBhx18 小时前
Spring Boot 4 防重复提交:从接口幂等到 Redis 分布式锁的完整实践
java·数据库·spring boot·redis·分布式
城管不管21 小时前
RabbitMQ死信队列
java·分布式·ai·面试·职场和发展·rabbitmq·agent
2601_9564563421 小时前
从研发到交付:嗨动视觉分布式KVM坐席系统的靠谱逻辑
分布式
java1234_小锋21 小时前
【免费】基于Spark实时医疗健康数据监测与疾病预测系统(Java版本+可视化大屏+Kafka+SpringBoot+Vue3) 锋哥原创出品,必属精品
大数据·spark·kafka·实时医疗健康数据监测·实时疾病预测系统
小O的算法实验室1 天前
AAAI-26,解空间变换引导的节能分布式异构柔性作业车间协同进化
分布式
ai_coder_ai2 天前
分布式缓存架构设计与实践
分布式·缓存
纯真时光2 天前
微服务分布式事务 -- XA,AT,TCC模式
分布式·微服务
笨蛋不要掉眼泪2 天前
RabbitMQ消息队列:业务幂等性
分布式·rabbitmq·java-rabbitmq