消息中间件kafka的php-rdkafka扩展使用教程_kafka consumestart_inrgihc的博客-程序员秘密

技术标签: kafka  Kafka  php  

一、PHP-rdkafka扩展简介

PHP-rdkafka是一个轻量的librdkafka封装,通过librdkafka提供c的扩展支持PHP对kafka进行开发,提供了一个 PHP 5 / PHP 7 Kafka客户端,它支持高级和低级消费者、生产者,以及元数据API。

librdkafa项目:https://github.com/edenhill/librdkafka

php-rdkafka项目:https://github.com/arnaud-lb/php-rdkafka

二、php-rdkafka开发文档

基于php-rdkafka进行PHP对kafka的开发文档:

(1)  https://arnaud.le-blanc.net/php-rdkafka-doc/phpdoc/index.html

(2)  https://arnaud.le-blanc.net/php-rdkafka-doc/phpdoc/book.rdkafka.html

1、生产者示例

<?php
$rk = new RdKafka\Producer();
$rk->setLogLevel(LOG_DEBUG); // 设置日志级别
$rk->addBrokers('127.0.0.1'); // 添加broker地址

$topic = $rk->newTopic("test"); // 新建主题

// 第一个参数:是分区。RD_KAFKA_PARTITION_UA代表未分配,并让librdkafka选择分区
// 第二个参数:是消息标志,必须为0
// 第三个参数:消息,如果不为NULL,它将被传递给主题分区程序
$topic->produce(RD_KAFKA_PARTITION_UA, 0, 'This is a test message'); // 生成并发送单个消息

2、消费者示例

<?php
$rk = new RdKafka\Consumer();
$rk->setLogLevel(LOG_DEBUG); // 设置日志级别
$rk->addBrokers("127.0.0.1"); // 添加经纪人,就是ip地址

$topic = $rk->newTopic("test"); // 这里的$rk和生产者是不同的类哦

// 第一个参数分区ID
// 第二个参数是开始消费的偏移量,有效值
$topic->consumeStart(0, RD_KAFKA_OFFSET_BEGINNING);

while (true) {
    // 第一个参数是要消耗的分区
    // 第二个参数是等待收到消息的最长时间,1000是一秒
    $msg = $topic->consume(0, 1000);
    if (@$msg->err) {
        echo $msg->errstr(), "\n"; // 输出错误
        break;
    } else {
        echo @$msg->payload, "\n"; // 输出消息
    }
}

三、php-rdkafka的安装

1、安装librdkafka前需要安装sasl开发包

yum install cyrus-sasl-lib cyrus-sasl-devel libgsasl-devel

2、安装librdkafka

先到https://github.com/edenhill/librdkafka上下载librdkafka源码包,并安装如下命令编译:

cd librdkafka/
./configure
make
make install

3、安装php-rdkafka

下载php源码包(地址:https://www.php.net/downloads.php)后,下载php-rdkafka项目(地址:https://github.com/arnaud-lb/php-rdkafka)后,将其放置到php-7.x.x/ext/目录下,并重命名为rdkafka,然后执行如下命令编译扩展:

cd php-7.2.25/ext/rdkafka
phpize
./configure
make all -j 5

4、配置PHP扩展

将module目录下的rdkafka.so文件拷贝的php的ext目录下,并增加php.inp中的扩展模块配置重启php即可。

#在php.ini 文件中配置 rdkafka扩展
extension=rdkafka.so

#查看扩展是否生效
php -m | grep kafka

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/inrgihc/article/details/108189727

智能推荐

ASP.net C# 将日期或时间不足2位补充0的代码,月、日、时、分、秒自动填充0。_c# 如日期时间个位数 前面自动补零_没得文化的的博客-程序员秘密

通常,我们会遇到日期时间格式如下:1:2019-5-132:2019-10-9 21:1:2当显示在表格之中时,非常不美观和整齐。通过以下函数可以将月、日、时、分、秒为一位数,补充为2位数,变成以下效果:1:2019-05-132:2019-10-09 21:01:02//检查变量是否 日期格式,返回true和falsepublic Boolean IsDateti...

二分图匈牙利算法模板_martinue的博客-程序员秘密

最大匹配数:最大匹配的匹配边的数目最小点覆盖数:选取最少的点,使任意一条边至少有一个端点被选择最大独立数:选取最多的点,使任意所选两点均不相连最小路径覆盖数:对于一个 DAG(有向无环图),选取最少条路径,使得每个顶点属于且仅属于一条路径。路径长可以为0(即单个点)。定理1:最大匹配数 = 最小点覆盖数(这是 Konig 定理)定理2:最大匹配数 = 最大独立数定理3:最小

宇宙条面试:这样跟面试官说代理,面试官对我竖起了大拇指!_java金融的博客-程序员秘密

终于有人把 java代理 讲清楚了,万字详解!看了这个再也不怕面试官问代理相关知识了。

CC2540的手机HTML5,实测对比CC2540 BTool和nRF Connect在nRF52840 Dongle的BTool测试_weixin_39627361的博客-程序员秘密

BTool是一个用于蓝牙设备调试的PC软件工具,工作在Central/Master 。它可以让用户通过PC软件同Peripheral/Slave BLE设备之间建立连接。在测试蓝牙模块的直驱功能时,使用BTool可以快速开发模块的功能,缩短研发周期。市面上主流的BTool软件有几款,CC2540 BTool和nRF Connect for Desktop较为常用,两者的BTool直驱测试体验如何,...

css3 loading动画演示_前端开发-武方博_weixin_34221332的博客-程序员秘密

http://www.wufangbo.com/demo/css/15/index.html转载于:https://www.cnblogs.com/zhp404/articles/4233804.html

随便推点

Spring 1.初识 Spring_陈陈陈辰的博客-程序员秘密

1. Spring简介Spring是一个开源框架,最早由Rod Johnson创建,是针对JavaBean生命周期进行管理的轻量级容器,而其最根本的使命:简化Java开发。Spring采取了以下4种关键策略: - 基于POJO(Plain Old Java Object)的轻量级和最小侵入性编程; - 通过依赖注入和面向接口实现松耦合; - 基于切面和惯例进行声明式编程; - 通过切...

黑马程序员——java-模式(工厂模式,单列模式,适配器模式)_linkang_的博客-程序员秘密

———–android培训、java培训、java学习型技术博客、期待与您交流!————1 设计模式:模式定义:前人总结的一些经验和思想,给我们提供了从抽象到具体的方法总共有23种分类:创建型-----创建对象结构型-----对象的关系行为型-----对象的作用(1) 工厂设计模式: 把new对象的 动作封装在一个类中,通过该类得到对象。代码体现:Car类:packag

Vue入门-Vue介绍_vue简介_追逐时光的博客-程序员秘密

1.什么是Vue.jsVue.js 是前端的主流框架之一,和Angular.js、React.js 一起,并成为前端三大主流框架! Vue.js 是一套构建用户界面的框架,只关注视图层,它不仅易于上手,还便于与第三方库或既有项目整合。(Vue有配套的第三方类库,可以整合起来做大型项目的开发)2.为什么要学习流行框架企业为了提高开发效率:在企业中,时间就是效率,效率就是金钱;能够提高开发的效率; 提高开发效率的发展历程:原生JS -&gt; Jquery之类的类库 -&gt; 前端模板引擎 -&

用 50 种编程语言写“Hello,World!”_张巧龙的博客-程序员秘密

今日份视频号视频-正文-作者丨Sylvain Saurel译者丨夏夜策划丨万佳这是一个计算机世界的编程时光之旅对很多人来说,每当学习一门新的编程语言,写下的第一行代码可能都是“Hello,...

Weblogic启动:Unrecognized option: -jrockit. Error: Could not create the Java Virtual Machine._撸依天的博客-程序员秘密

linux启动weblogic出错:starting weblogic with Java version:Unrecognized option: -jrockitError: Could not create the Java Virtual Machine.Error: A fatal exception has occurred. Program will exit.

黑马程序员--Objective-C——内存管理二_qq_16758755的博客-程序员秘密

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------一、set方法的内存管理接着上篇博文的例子,为Person增加一个属性_age和它的get、set方法。在main.m中声明一新书。如果我们想给Person换一本新书。按照我们的思路,代码是这样的 #import #import by Mac

推荐文章

热门文章

相关标签