多语言支持
从 4.1 开始,EMQX 提供了专门的多语言支持。它允许用户使用 Python, Java 等编程语言来处理 EMQX 的 钩子(Hooks) ,或解析私有的 TCP/UDP 协议,使得它们接入到 EMQX 系统。
注:在 4.1 到 4.2 版本中,多语言的功能使用 erlport (opens new window) 作为底层的通信的支持,在 4.3 以后升级到了 gRPC (opens new window) 。这两个版本的对外接口并不兼容,旧版本的设计请查看对应版本的文档。
注: 4.3 中,开放支持了所有的 EMQX 的钩子。
钩子扩展
多语言的 钩子扩展 由 emqx-exhook 插件进行支持。它允许用户使用其它编程语言处理 EMQX 的 钩子(Hooks)。例如:
- 校验某客户端的登录权限。
- 校验某客户端 PUB/SUB 的操作权限。
- 处理消息类事件,并消息桥接、转发或存储到其它的系统。
见:多语言 - 钩子扩展。
协议接入
多语言的 协议接入 处理由 emqx-exproto 插件进行支持。它允许用户使用其它的编程语言实现私有的,自定义的协议接入。例如:
- 可接收基于 TCP/UDP/TLS/DTLS 及 PSK 的终端连接。
- 允许 Python, Java 代码侧订阅主题,或发布消息到 EMQX 系统。
见:多语言 - 协议接入。
历史性遗留
在 EMQX 4.1 之前,仅包含对 Lua 的支持,它由 emqx-lua-hook
实现。该插件仅支持对系统钩子的处理,不支持协议接入的处理。
见:多语言 - Lua。