emq java_使用 Java 开发 EMQ X MQTT 服务器插件

本文介绍了如何使用Java开发EMQ X MQTT服务器的插件,通过emqx_extension_hook支持处理各种事件,如客户端连接、权限验证、消息处理等。开发者需要在EMQ X服务器上安装JDK 1.8以上版本,然后创建Java项目,导入所需SDK,编写并部署扩展代码。示例代码展示了如何挂载系统中的所有钩子,并提供了事件回调函数的实现,包括客户端连接、断开、认证、ACL检查等。通过继承DefaultCommunicationHandler或实现CommunicationHandler接口,开发者可以根据需求定制扩展功能。
摘要由CSDN通过智能技术生成

从 v4.1 版本开始,EMQ X MQTT 服务器 提供了专门的多语言支持插件 emqx_extension_hook ,现已支持使用其他编程语言来处理 EMQ X 中的钩子事件,开发者可以使用 Python 或者 Java 快速开发自己的插件,在官方功能的基础上进行扩展,满足自己的业务场景。例如:

验证某客户端的登录权限:客户端连接时触发对应函数,通过参数获取客户端信息后通过读取数据库、比对等操作判定是否有登录权限

记录客户端在线状态与上下线历史:客户端状态变动时触发对应函数,通过参数获取客户端信息,改写数据库中客户端在线状态

校验某客户端的 PUB/SUB 的操作权限:发布/订阅时触发对应函数,通过参数获取客户端信息与当前主题,判定客户端是否有对应的操作权限

处理会话 (Sessions) 和 消息 (Message) 事件,实现订阅关系与消息处理/存储:消息发布、状态变动时触发对应函数,获取当前客户端信息、消息状态与消息内容,转发到 Kafka 或数据库进行存储。

注:消息(Message) 类钩子,仅在企业版中支持。

Python 和 Java 驱动基于 Erlang/OTP-Port 进程间通信实现,本身具有非常高的吞吐性能,本文以 Java 拓展为例介绍 EMQ X 跨语言拓展使用方式。

836593e0a208

img

Java 拓展使用示例

要求

EMQ X 所在服务器需安装 JDK 1.8 以上版本

开始使用

创建 Java 项目

添加SDK io.emqx.extension.jar和 erlport.jar 到项目依赖

复制 examples/SampleHandler.java到您的项目中

根据 SDK SampleHandler.java 中的示例编写业务代码,确保能够成功编译

部署

编译所有源代码后,需要将 sdk 和代码文件部署到 EMQ X 中:

复制 io.emqx.extension.jar 到 emqx/data/extension 目录

将编译后的 .class 文件,例如 SampleHandler.class 复制到 emqx/data/extension目录

修改 emqx/etc/plugins/emqx_extension_hook.conf 配置文件:

exhook.drivers = java

## Search path for scripts or library

exhook.drivers.java.path = data/extension/

exhook.drivers.java.init_module = SampleHandler

启动 emqx_extension_hook 插件,如果配置错误或 Java 代码编写错误将无法正常启动。启动后尝试建立 MQTT

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值