emqx mysql_【跟我一起搭建物联网平台】6、EMQX之Kafka插件编译安装

本文详细介绍了如何在EMQX服务器上编译并安装Kafka插件,以实现MQTT消息通过Kafka持久化到数据库。首先在emqx-rel目录下修改Makefile和relx.config,然后编译emqx。接着,配置Kafka插件参数,并启动插件。测试验证MQTT消息已成功转发到Kafka的Processing主题,最后说明可以使用PHP、Java等客户端消费数据并存储到MySQL。
摘要由CSDN通过智能技术生成

正 文:

EMQX服务器搭建好之后,我们需要将MQTT消息持久化保存到mysql等数据库里了,这个时候就需要借助kafka这个消息中间件了,下面飘易来介绍下Kafka插件编译安装。

Kafka插件github上有好几个:

修改 emqx-rel目录下的Makefile:DEPS += $(foreachdep,$(MAIN_APPS),$(call app_name,$(dep)))

DEPS += emqx_kafka_bridge 【增加这行】

...

$(foreach dep,$(MAIN_APPS),$(evaldep_$(call app_name,$(dep)) = $(CLONE_METHOD) https://github.com/emqx/$(dep)$(call app_vsn,$(dep))))

dep_emqx_kafka_bridge = git https://github.com/bob403/emqx_kafka_bridge.git master 【增加这行】

在relx.config里增加:{emqx_kafka_bridge, load}

重新编译emqx:cd emqx-relx

rm -rf _rel                 //删除之前编译的结果

make clean

make

修改kafka插件配置:/emq/emqx-rel/_rel/emqx/etc/plugins/emqx_kafka_bridge.conf

【注意】这个插件的配置文件在好几个地方都存在,我们需要找到编译后的【_rel】目录下的配置,否则不生效。

根据实际情况调整配置:##--------------------------------------------------------------------

## kafka Bridge

##--------------------------------------------------------------------

## The Kafka loadbalancer node hostthat bridge is listening on.

##

## Value: 127.0.0.1, localhost

kafka.host = localhost

## The kafka loadbalancer node portthat bridge is listening on.

##

## Value: Port

kafka.port = 9092

## The kafka loadbalancer nodepartition strategy.

##

## Value: random, sticky_round_robin,strict_round_robin, custom

kafka.partitionstrategy =strict_round_robin

## Each worker represents aconnection to a broker + topic + partition combination.

## You can decide how many workers tostart for each partition.

##

## Value:

kafka.partitionworkers = 8

## payload topic.

## kafka上要提前建立一个名为Processing的Topic

## Value: string

kafka.payloadtopic = Processing

启用插件

列出所有插件:./emqx_ctl plugins list

看到:Plugin(emqx_kafka_bridge,version=3.0, description=EMQ X Kafka Bridge, active=false)

启动kafka插件:./emqx_ctl plugins load emqx_kafka_bridge

返回:Start apps: [emqx_kafka_bridge]

Plugin emqx_kafka_bridge loadedsuccessfully.

测试步骤MQTT消息是否转发到kafka:

1,kafka上要提前建立一个名为Processing的Topic(分区为3,方便多个客户端消费)./bin/kafka-topics.sh --create--zookeeper localhost:2181 --replication-factor 1 --partitions 3  --topic Processing

2,打开MQTT客户端,我使用的是chrome浏览器应用MQTTBox:

53d9b7bca60fcef6ae86e5c701754303.png

随便发布消息到一个MQTT主题,比如test,这里的MQTT 的topic和kafka的topic毫无关系,不要搞混了。

3,Kafka消费终端,消费主题Processing:./bin/kafka-console-consumer.sh--bootstrap-server localhost:9092  --topic Processing

收到反馈如下:{"action":"connected","device_id":"3fbf56e4-3396-47b0-a99f-5ecf0964e23b1561539149561","username":"undefined","ts":1561539149}

{"action":"message_publish","device_id":"3fbf56e4-3396-47b0-a99f-5ecf0964e23b1561539149561","username":"undefined","topic":"test","payload":"a1","ts":1561539155}

{"action":"message_publish","device_id":"3fbf56e4-3396-47b0-a99f-5ecf0964e23b1561539149561","username":"undefined","topic":"test","payload":"a2","ts":1561539157}

{"action":"disconnected","device_id":"3fbf56e4-3396-47b0-a99f-5ecf0964e23b1561537211825","username":"undefined","ts":1561539143}

可以收到MQTT转发的事件,比如connected、disconnected、message_publish等。

剩下的事我们就可以利用PHP、java等客户端去消费Processing主题,将需要的信息存入MYSQL等数据库了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值