C# 执行kafka 启动脚本,用于kafka在windows环境下自启动

十年河东,十年河西,莫欺少年穷

学无止境,精益求精

卡夫卡分区详解请参考:https://zhuanlan.zhihu.com/p/371886710

一文读懂kafka的幂等生产者:https://zhuanlan.zhihu.com/p/408392387

一文读懂 kafka 的事务机制:https://zhuanlan.zhihu.com/p/411171789

windows环境下配置部署kafka服务完成后,怎样做到kafka自动启动?我是通过bat文件来实现的。

我的文件路径:

关于windows环境下如何部署kafka消息中间件,请参考鄙人博客:windows 10 环境下配置kafka,及我所遇到的坑 

启动kafka之前,要先启动依赖项ZooKeeper服务,因此,我们再D:\tool\batl文件夹下建立名为:startKafka.bat的文件,其内容如下:

cd D:\tool\kafka\kafka_2.12-2.7.0
D:
bin\windows\zookeeper-server-start.bat config\zookeeper.properties

 啥意思呢?

切换到目录:D:\tool\kafka\kafka_2.12-2.7.0 下,执行子文件夹bin/windows 中的 zookeeper-server-start.bat 及 config文件夹下的 zookeeper.properties ,用于启动Zookeeper服务。

这些文件均在kafka部署目录下,如有疑问,可参考鄙人博客:windows 10 环境下配置kafka,及我所遇到的坑 

其次在新建一个名为:startKafka.bat 的文件,其内容如下:

cd D:\tool\kafka\kafka_2.12-2.7.0
D:
bin\windows\kafka-server-start.bat config\server.properties

 啥意思呢?

和上述一样,不必解释了。

有了这两个文件,我们就可以通过C# 服务的方式来执行这两个Bat文件了,这样做的好处是:即时服务器重启,也能做到kafka自启动。

C#程序如下【我写的控制台程序,修改为windows 服务程序即可】

    class Program
    {
        static void Main(string[] args)
        {
            //首先启动ZooKeeper
            Task.Run(delegate { StartProcess(@"D:\tool\bat\", "startZooKeeper.bat"); });
            //30秒的时间  ZooKeeper 启动完成  如果30秒都不能启动完成,要么出问题了,要么您该换服务器了
            Thread.Sleep(30000);
            //启动kafka
            Task.Run(delegate { StartProcess(@"D:\tool\bat\", "startKafka.bat"); });
            Console.Read();
        }

        private static void StartProcess(string path ,string fileName)
        {
            Process proc = new Process();
            string targetDir = string.Format(path);

            proc.StartInfo.WorkingDirectory = targetDir;
            proc.StartInfo.FileName = fileName;
            proc.StartInfo.Arguments = string.Format("10");

            proc.Start();
            proc.WaitForExit();
        }
    }

这样,就可以做到服务器重启时,kafka服务也会重启。

@天才卧龙的博客

posted @ 2021-02-23 15:07  天才卧龙  阅读(407)  评论(0编辑  收藏  举报