消息中间件Kafaka - PHP操作使用Kafka
Centos版本:Centos6.4,PHP版本:PHP7。
在上一篇文章中使用IP为192.168.9.154的机器安装并开启了Kafka进行了简单测试,充当了Kafka服务器。
本篇文章新开启一台IP为192.16.9.157的机器给PHP开启扩展。
找到github的扩展下载地址,这里是php-rdkafka,虽然php有一个扩展是php-kafka,但是php-rdkafka要比php-kafka强大。
https://github.com/arnaud-lb/php-rdkafka //php-rdkafka下载地址
在安装php-rdkafka之前需要给系统安装一个库,librdkafka。
https://github.com/edenhill/librdkafka //librdkafka地址
两个包都下载完之后,首先进行librdkafka的解压安装
# unzip librdkafka-master.zip
# cd librdkafka-master
# ./configure
# make && make install
接下来编译安装php-rdkafka
unzip php-rdkafka-master.zip
# cd php-rdkafka-master
# phpize
# ./configure --with-php-config=/usr/local/php/bin/php-config
# make && make install
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/ //so地址
# vim /usr/local/php/etc/php.ini //添加下面代码
extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/rdkafka.so
# service php-fpm restart //重启PHP
#查看扩展是否生效
php -m | grep kafka


OK
hp操作kafka
运行前先开启我们的zookeeper和kafka 上篇文章有如何开启
运行producer
kafka默认端口9092vim producer.php
<?php
$rk = new RdKafka\Producer();
$rk->setLogLevel(LOG_DEBUG);
$rk->addBrokers("ip:9092");
$topic = $rk->newTopic("test");
$topic->produce(RD_KAFKA_PARTITION_UA, 0, "要发送的消息");
运行consumervim consumer.php
<?php
$rk = new RdKafka\Consumer();
$rk->setLogLevel(LOG_DEBUG);
$rk->addBrokers("ip");
$topic = $rk->newTopic("test");
$topic->consumeStart(0, RD_KAFKA_OFFSET_BEGINNING);
while(true){
sleep(1);
$msg = $topic->consume(0, 1000);
if ($msg) {
echo $msg->payload, "\n";
}
}
开启两个窗口一个运行consumer 一个运行producer
php consumer.phpphp producer.php
会发现我们已经简单的会使用kafka了。
消息中间件Kafaka - PHP操作使用Kafka的更多相关文章
- kafka与传统的消息中间件对比
RabbitMQ和kafka从几个角度简单的对比 业界对于消息的传递有多种方案和产品,本文就比较有代表性的两个MQ(rabbitMQ,kafka)进行阐述和做简单的对比, 在应用场景方面, Rabbi ...
- 消息中间件面试题31道RabbitMQ+ActiveMQ+Kafka
消息中间件面试题31道RabbitMQ+ActiveMQ+Kafka 前言 文章开始前,我们先了解一下什么是消息中间件? 什么是中间件? 非底层操作系统软件,非业务应用软件,不是直接给最终用户使用的, ...
- kafka实战教程(python操作kafka),kafka配置文件详解
kafka实战教程(python操作kafka),kafka配置文件详解 应用往Kafka写数据的原因有很多:用户行为分析.日志存储.异步通信等.多样化的使用场景带来了多样化的需求:消息是否能丢失?是 ...
- 消息中间件选型分析——从Kafka与RabbitMQ的对比来看全局
一.前言 消息队列中间件(简称消息中间件)是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成.通过提供消息传递和消息排队模型,它可以在分布式环境下提供应用解耦 ...
- IM系统的MQ消息中间件选型:Kafka还是RabbitMQ?
1.前言 在IM这种讲究高并发.高消息吞吐的互联网场景下,MQ消息中间件是个很重要的基础设施,它在IM系统的服务端架构中担当消息中转.消息削峰.消息交换异步化等等角色,当然MQ消息中间件的作用远不止于 ...
- CentOS7搭建Kafka单机环境及基础操作
前提 安装Kafka前需要先安装zookeeper集群,集体安装方法请参照我的另一篇文档. Kafka安装 下载 wget https://archive.apache.org/dist/kafka/ ...
- 消息中间件选型分析:从 Kafka 与 RabbitMQ 的对比看全局
本文转载自消息中间件选型分析:从 Kafka 与 RabbitMQ 的对比看全局 前言 消息队列中间件(简称消息中间件)是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布 ...
- Kafka、RabbitMQ、RocketMQ消息中间件的对比
引言 分布式系统中,我们广泛运用消息中间件进行系统间的数据交换,便于异步解耦.现在开源的消息中间件有很多,目前对Kafka.RabbitMQ.RocketMQ这三个消息中间件做下对比分析. - - k ...
- 使用logstash从Kafka中拉取数据并传输给elasticsearch且创建相应索引的操作
注意事项:默认Kafka传递给elastci的数据是在'data'字段,且不包含其他数据,所以需要使用额外的操作进行处理 logstash配置文件操作 input { kafka { bootstra ...
随机推荐
- TensorFlow Federated:基于分散式数据的机器学习
https://www.tensorflow.org/federated/ TensorFlow Federated (TFF) 是一个开源框架,用于对分散式数据进行机器学习和其他计算.我们开发 TF ...
- 初学JavaScript正则表达式(三)
正则表达式由两种基本的字符类型组成 原义文本字符 //a abc 1 元字符 元字符是有特使含义的非字母字符 * 匹配前面的子表达式零次或多次 + 匹配前面的子表达式一次或多次 ? 匹配前面的子表达式 ...
- c# WF 第3节 窗体的属性
本节内容: 1:如何找到窗口属性 2:窗口属性 1:如何找到窗口属性 2:窗口属性
- python3.5.3rc1学习八:文件打包
from cx_Freeze import setup, Executable setup(name='test to exe', version = '0.1', description='test ...
- lua 13 模块(类似class)与包
转自: http://www.runoob.com/lua/lua-modules-packages.html 模块类似于一个封装库,从 Lua 5.1 开始,Lua 加入了标准的模块管理机制,可以把 ...
- SpringBoot(十八)_springboot打成war包部署
最近在做项目的时候,由于使用的是springboot,需要打成war包.我就按照正常的思路去打包,结果部署后无法访问,一直报错404.后续问了问 公司同事,他给解决了.说大部分都是这个原因. 如果需要 ...
- ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于Wi-Fi模块(ESP8266)AT指令TCP透传方式,MQTT通信控制升级(加入数据校验)
前言 这节演示下,上两节写的利用MQTT来控制STM32控制的程序 测试准备工作(默认访问我的服务器,改为自己的服务器,请看后面说明) 一,下载BootLoader程序(请自行下载) 首先BootLo ...
- Java List<T> 去重
1.List<T>,是个泛型,实际业务里,它经常是一个bean,例如Person类,里面有age.name等属性. 2.如果List<Person> ps 有重复的数据,我们 ...
- Nginx+Tomcat+Memcache 实现session共享
Nginx + Tomcat + Memcache 实现session共享 1. Nginx 部署 1.上传源码包到服务器,解压安装 下载地址:http://nginx.org/en/download ...
- Linux socket program Demo1(client & server)
client and server Demo of socket. client send data to server. server send data to client. // this ...