多语言 - 协议接入
- 可接收基于 TCP/UDP/TLS/DTLS 及 PSK 的终端连接。
- 允许 Python, Java 代码侧订阅主题,或发布消息到 EMQ X 系统。
多语言系统的通信及过程调用的逻辑参见:。
与 不同的是,emqx-exproto
提供的是完全不同的回调和函数接口以实现协议接入的处理:
我们按层级将它分为:
连接层
该部分主要 维持 Socket 的生命周期和数据的收发:
- 调用
init
回调。用于通知外部模块已新建立了一个连接。 - 调用 回调。用于通知外部模块连接已关闭。
- 调用
received
回调。用于通知外部模块该连接新收到的数据包。 - 提供
close
接口。供外部模块调用,用于主动关闭连接。
协议/会话层
该部分主要提供 PUB/SUB 接口,以实现与 EMQ X Broker 系统的消息互通。包括:
- 提供
register
接口。供外部模块调用,用于向集群注册客户端。 - 提供 接口。供外部模块调用,用于发布消息 EMQ X Broker 中。
- 提供
subscribe
接口。供外部模块调用,用于订阅某主题,以实现从 EMQ X Broker 中接收某些下行消息。 - 提供
unsubscribe
接口。供外部模块调用,用于取消订阅某主题。 - 调用
deliver
回调。用于接收下行消息(在订阅主题成功后,如果主题上有消息,便会回调该方法)
目前对于 emqx-exproto
提供的 SDK 有:
注:SDK 版本与 EMQ X 的第二位版本号进行兼容。例如,在 EMQ X v4.1.4 中,应该使用 v4.1.x 的 SDK
SDK 的概念参考: