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

相关推荐
小马爱打代码24 分钟前
Zookeeper特性与节点数据类型详解
分布式·zookeeper·云原生
斯普信专业组30 分钟前
深度剖析RabbitMQ:从基础组件到管理页面详解
分布式·rabbitmq
技术路上的苦行僧3 小时前
互联网全景消息(11)之Kafka深度剖析(下)
分布式·kafka
jimiStephen3 小时前
zookeeper-配置
分布式·zookeeper·debian
一张假钞3 小时前
Zookeeper概览
分布式·zookeeper·云原生
jimiStephen3 小时前
zookeeper 基本原理-单机模式、集群模式
分布式·zookeeper·云原生
言之。6 小时前
【微服务】面试题 6、分布式事务
分布式·微服务·架构
阿里云云原生8 小时前
道旅科技借助云消息队列 Kafka 版加速旅游大数据创新发展
科技·kafka·旅游
一张假钞16 小时前
Zookeeper单机操作
分布式·zookeeper·云原生
未命名冀18 小时前
消息中间件面试
面试·kafka·rabbitmq