首页 > 系统相关 >windows下php安装kafka

windows下php安装kafka

时间:2024-08-14 15:27:15浏览次数:14  
标签:Zookeeper windows zookeeper Kafka topic kafka php

下载zookeeper

Kafka 依赖 Zookeeper 进行分布式协调,所以需要下载Zookeeper ,当然你也可以使用kafka包里自带的一个默认配置的 Zookeeper。这里我们单独下载一个

  1. 访问Zookeeper官方下载页面
  2. 在页面中找到最新的稳定版本,点击相应的下载链接,下载 Zookeeper 的压缩包文件
    在这里插入图片描述
  3. 解压 Zookeeper,将下载的压缩包文件解压到一个目录,例如 D:\zookeeper。解压后,目录结构类似于:
D:\zookeeper
├── bin
├── conf
├── lib
├── logs
└── ...
  1. 配置 Zookeeper,打开D:\zookeeper\conf 目录,将 zoo_sample.cfg 文件复制并重命名为 zoo.cfg。使用文本编辑器(如 Notepad++)打开 zoo.cfg 文件,并检查以下配置:
tickTime=2000
dataDir=D:/zookeeper/data
clientPort=2181

  • tickTime 是 Zookeeper 服务器和客户端之间的心跳时间(以毫秒为单位)。
  • dataDir 是 Zookeeper 存储数据的目录,确保路径是有效的并且存在。
  • clientPort 是 Zookeeper 服务的端口,默认是 2181。
    确保 D:\zookeeper\data 目录存在,如果不存在,请手动创建。
  1. 启动 Zookeeper,打开命令提示符(win+R输入cmd),切换到D盘,进入zookeeper\bin,执行zkServer.cmd
  2. 在bin目录下,执行zkServer.cmd status可以看到 Zookeeper 的运行状态,
    执行zkCli.cmd -server localhost:2181可以连接到 Zookeeper 客户端

下载kafka

  1. 访问Kafka 官方下载页面下载最新稳定版本的 Kafka 二进制文件在这里插入图片描述
  2. 解压 Kafka
    将下载的 Kafka 压缩包解压到一个目录,例如 D:\kafka。
  3. 启动 Kafka 服务器,打开一个新的命令提示符窗口,进入 Kafka 的 bin\windows 目录:
cd D:\kafka\bin\windows

使用以下命令启动 Kafka 服务器:

kafka-server-start.bat ..\..\config\server.properties

kafka的启动需要加载config\server.properties的配置。

窗口不要关闭,至此,你已启动了zookeeper和kafka。当然你也可以用kafka自带的zookeeper。自带的启动方式为:
打开命令提示符,进入 Kafka 的 bin\windows 目录:

cd D:\kafka\bin\windows

zookeeper-server-start.bat ..\..\config\zookeeper.properties

注意,如果你已经启动了单独下载安装的zookeeper就不要再启动kafka自带的zookeeper了,否则可能出现端口被占用的情况,如果出现端口被占用,请杀死对应的进程。(如果失败请检查2181端口是否被占用,netstat -ano | findstr :2181,如果有被占用,结束进程taskkill /F /PID 1234。。这里的1234pid要写实际的pid)

安装PHP 的 Kafka 扩展

为了让 PHP 能够与 Kafka 交互,你需要安装 rdkafka 扩展,并且可以选择合适的 Kafka PHP 客户端库,如 longlang/phpkafka。

  1. 安装 rdkafka 扩展
    访问 PECL: rdkafka 并下载适用于你 PHP 版本的 php_rdkafka.dll 文件。
    在这里插入图片描述
    在这里插入图片描述
    点击查看自己对应的版本,下载对应的包。确定php的版本号,操作系统位数,nts或者ts。如果不清楚,可以使用phpinfo来查看自己的信息。或者直接使用php -v
    在这里插入图片描述
  2. 解压文件,主要用到2个dll文件,将librdkafka.dll放在php的安装目录下,比如D:\phpstudy_pro\Extensions\php\php7.4.3nts,将php_rdkafka.dll放在ext中,比如
    D:\phpstudy_pro\Extensions\php\php7.4.3nts\ext
  3. 编辑 php.ini 文件,开启rdkafka扩展
extension=php_rdkafka.dll

或者

extension=rdkafka

保存文件,重启php

安装 Kafka PHP 客户端库

进入你的php项目,使用composer安装longlang/phpkafka,或者nmred/kafka-php
longlang

composer require longlang/phpkafka

nmred

composer require nmred/kafka-php

如果你的composer报错,比如laravel框架中,laravel/horizon的错误,是缺少PCNTL扩展,这个扩展windows下不支持,可以忽略平台使用

composer require longlang/phpkafka --ignore-platform-reqs

nmred

composer require nmred/kafka-php --ignore-platform-reqs

以下使用nmred 举例

配置和使用 Kafka

创建kafka的配置文件

laravel 中在config新增一个kafka.php

<?php

return [
    'brokers' => env('KAFKA_BROKERS', 'localhost:9092'),
    'consumer_group_id' => env('KAFKA_CONSUMER_GROUP_ID', 'laravel-consumer-group'),
    'topics' => [
        'test-topic' => [
            'partition' => 0,
            'replica' => 1,
        ],
    ],
];

创建 Kafka 生产者

创建一个生成类

<?php

namespace App\Http\Controllers;

use RdKafka\Producer;

class KafkaProducerController extends Controller
{
    public function produce()
    {
        $conf = new \RdKafka\Conf();
        $producer = new Producer($conf);
        $producer->addBrokers(config('kafka.brokers'));

        $topic = $producer->newTopic('test-topic');
        $topic->produce(RD_KAFKA_PARTITION_UA, 0, 'Hello Kafka');

        $producer->flush(10000);

        return 'Message produced successfully';
    }
}

配置好对应的api路由后,访问一次就是生产一条消息
在这里插入图片描述

创建kafka消费者

这里使用的是laravel框架,需要在app/console/commands下创建一个定时任务,

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use RdKafka\Consumer;
use RdKafka\TopicConf;

class KafkaConsumer extends Command
{
    protected $signature = 'kafka:consume';
    protected $description = 'Consume messages from Kafka';

    public function handle()
    {
        $conf = new \RdKafka\Conf();
        $conf->set('group.id', config('kafka.consumer_group_id'));

        // 开启自动提交偏移量
        $conf->set('enable.auto.commit', 'true');

        $consumer = new Consumer($conf);
        $consumer->addBrokers(config('kafka.brokers'));

        $topicConf = new TopicConf();
        $topicConf->set('auto.offset.reset', 'latest');

        $topic = $consumer->newTopic('test-topic', $topicConf);
        // 开始从指定分区消费消息,注意不再从头开始。
        $topic->consumeStart(0, RD_KAFKA_OFFSET_STORED);

        while (true) {
            // 消费消息,等待时间为1000ms。
            $message = $topic->consume(0, 1000);
            // 检查是否成功消费到消息,并且没有错误。
            if ($message && $message->err == RD_KAFKA_RESP_ERR_NO_ERROR) {
                // 输出消息的内容。
                $this->info($message->payload);
            }
        }
    }
}

在这里插入图片描述
已经拿到消息了,居然的kafka的操作这里不细讲,只注重windows下本地开发环境kafka的安装。记得在消费时,开启你的zookeeper和kafka。

标签:Zookeeper,windows,zookeeper,Kafka,topic,kafka,php
From: https://blog.csdn.net/hutaoo/article/details/141184875

相关文章

  • Thinkphp6多数据库实例跨库操作
    ThinkPHP6.env文件database.php数据库配置配置.env文件#默认数据库配置DB_CONNECTION=mysqlDB_HOST=127.0.0.1DB_PORT=3306DB_DATABASE=default_dbDB_USERNAME=rootDB_PASSWORD=#第二个数据库配置DB2_CONNECTION=mysqlDB2_HOST=127.0.0.1DB2_PORT=3306DB2_DAT......
  • windeployqt.exe的使用与避坑(windows平台)
    1.介绍windeployqt.exe是Qt自带的工具,用于创建应用程序发布包。简单来说,这个工具可以自动地将某程序依赖的库、资源拷贝到其所在目录,防止程序在其他电脑上运行报找不到库的错误。这里贴上官方文档:https://doc.qt.io/qt-5/windows-deployment.html本文适用于Windows+Visual......
  • windows下安装部署
    1.安装1.1官网下载Foundationstar下载解压缩1.2官网下载Agentstar下载解压缩2.修改配置2.1agents把解压的agents放到Foundations,改下文件夹名2.2端口修改webapp->application.yml2.3数据保存修改config->application.ymlmysql存储mysql账号密码修......
  • 宝塔Windows面板环境要求
    操作系统:仅支持WindowsServer2008R2/2012/2016/2019/2022,64位系统(暂不支持Windows家庭环境使用)确保是干净的操作系统,没有安装过其它环境带的Apache/Nginx/php/MySQL/pgsql/gitlab/java(已有环境、网站在运行的不可安装) :-: 重要的事情提前说,重要的事情说三遍,已有环境不......
  • 宝塔PHP并发调整建议
    PHP并发调整建议:CPU/内存单站点多站点1H/512M20-3010-201H/1G30-5020-302H/2G50-8030-502H/4G60-10030-504H/4G100-15030-804H/8G100-20030-806H/6G100-20030-808H/8G100-30050-1008H/16G100-300100-15016H/16G100-300100-150注1:容易受到CC攻击的站点使用......
  • php: 根据ip地址得到所属的省市
    一,代码:说明:原代码来自于网络,我把它做了封装,去掉了其中无响应的接口,对有些地址有变化的接口做了更新,     确保到目前为止所调用的接口都可用,    不再直接返回json,而是返回数组<?php/*根据ip得到所属的省市信息*/classCityByIp{//中国34个省级行政......
  • Windows 内存压缩(Memory Compression)是一种内存管理技术,通过压缩内存中的数据来减少物
    内存压缩(MemoryCompression)的起源可以追溯到对内存管理的需求增加的背景下。早期计算机系统主要依赖于物理内存的增加来应对内存压力,但这导致了更高的成本和复杂性。内存压缩技术最初由研究人员和工程师在20世纪80年代和90年代开发,目的是通过软件算法减少内存占用。操作系统和虚......
  • WPBT (Windows Platform Binary Table) 是一种用于在Windows启动时传递信息的结构。它
    WPBT(WindowsPlatformBinaryTable)的起源可以追溯到Windows操作系统对ACPI(AdvancedConfigurationandPowerInterface)规范的扩展需求。ACPI是一个用于管理硬件配置和电源管理的标准,广泛用于操作系统与固件之间的通信。WPBT是这种规范的一部分,专门设计用于Windows环境。......
  • 【CTF | WEB】002、攻防世界WEB题目之simple_php
    文章目录simple_php题目描述:解题思路:原理simple_php题目描述:小宁听说php是最好的语言,于是她简单学习之后写了几行php代码。解题思路:打开场景<?phpshow_source(__FILE__);include("config.php");$a=@$_GET['a'];$b=@$_GET['b'];if($a==0and$a){......
  • 图解Kafka | 彻底弄明白 Kafka 两个最重要的配置
    我已经使用Kafka近两年了,我发现有两个配置很重要,但是不太容易理解。这两个配置分别是acks和min.insync.replicas。本文将通过一些插图来帮助理解这2个配置,以便更好的使用Kafka为我们服务。复制我假设你已经熟悉Kafka了,但为了更好地理解这些配置,还是有必要回顾一下Kaf......