zoukankan      html  css  js  c++  java
  • 基于NET Core简单操作Kafka

    安装

    windows服务器上安装JDK,kafka以及zookeeper。

    安装JDK

    JDK下载路径
    在这里插入图片描述
    安装完成后需要添加以下的环境变量(右键点击“我的电脑” -> “高级系统设置” -> “环境变量” ):
    C:Program FilesJavajdk-14in(你的安装目录)
    打开cmd运行 “java -version” 查看当前系统Java的版本,测试是否安装完成。
    在这里插入图片描述

    安装zookeeper

    Kafka的运行依赖于Zookeeper,所以在运行Kafka之前我们需要安装并运行Zookeeper
    下载zookeeper
    主要是下载Bin文件的版本,apache-zookeeper-3.6.0-bin.tar.gz
    在这里插入图片描述
    下载完成解压文件
    打开zookeeper-3.4.13conf,把zoo_sample.cfg重命名成zoo.cfg
    从文本编辑器里打开zoo.cfg
    把dataDir的值改成“./zookeeper-3.4.13/data”
    添加环境变量:
    C:Program Filesapache-zookeeper-3.6.0in(你的解压到的目录)
    进入目录C:Program Filesapache-zookeeper-3.6.0in,文本编辑zkEnv.cmd,添加JAVA_HOME变量后保存退出。
    set JAVA_HOME=C:Program FilesJavajdk-14(前面安装JDK的目录)
    在这里插入图片描述
    打开cmd然后执行 zkserver,挂着不要关闭。
    在这里插入图片描述

    安装kafka

    下载kafka
    在这里插入图片描述
    解压文件,注意解压的目录不能含有中文和空格
    进入kafka的目录config
    从文本编辑器里打开 server.properties
    把 log.dirs的值改成 “./logs”
    打开cmd进入kafka文件目录: cd C:kafka_2.11-2.4.1(kafka目录)
    输入并执行: .inwindowskafka-server-start.bat .configserver.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();
            }
        }
    }
    

    运行测试结果:
    在这里插入图片描述

  • 相关阅读:
    什么是高可用性(High Availability)?
    Programer's Tools
    dotnetcore 站点搭建实践
    Nginx使用总结
    小程序开发工具一直登陆不上,提示网络失败
    前端页面JS和CSS以及图片加载nginx报错:net::ERR_CONTENT_LENGTH_MISMATCH的解决与检查
    angualrjs添加ngTouch
    H5自定义金额键盘,改良后ios体验效果流畅
    js生成带有logo的二维码并保存成图片下载
    模仿input闪烁光标
  • 原文地址:https://www.cnblogs.com/zt102545/p/13940218.html
Copyright © 2011-2022 走看看