学习html 欣赏好的网站建站教程
EdgeX Message Bus 消息总线
一、概述
EdgeX MessageBus 内部消息总线,用于 EdgeX 服务之间的内部通信。 EdgeX 服务是指来自 EdgeX 的任何核心/支持/应用程序/设备服务或使用 EdgeX SDK 构建的任何自定义应用程序或设备服务。
EdgeX MessageBus 用于内部 EdgeX 服务与服务之间的通信。它并不意味着作为外部服务与内部 EdgeX 服务通信的入口点。 eKuiper 规则引擎是一个例外,因为它与 EdgeX 紧密集成。
用作外部入口点的 EdgeX 服务包括:
- REST API - 以非安全模式直接访问或通过API网关 以安全模式运行
- 使用外部 MQTT 触发器的应用服务 - 配置为使用外部 MQTT 触发器的应用服务将在 “外部” 上接受来自外部 MQTT 连接服务的数据。
- 使用 HTTP 触发器的应用服务 - 配置为使用 HTTP 触发器的应用服务将接受数据来自 “外部” 上的外部服务休息连接。访问方式与其他 EdgeX REST API 相同。
- 使用自定义触发器的应用服务 - 配置为使用自定义触发器的应用服务可以接受数据来自外部服务或通过附加协议,几乎没有限制。
- Core Command 外部 MQTT 连接 - Core Command 现在通过独立于 EdgeX MessageBus 的外部 MQTT 连接接收命令请求并发布响应。请求被转发到 EdgeX MessageBus,相应的响应被转发回外部 MQTT 连接。
最初,EdgeX MessageBus 仅用于将事件/读数(Event/Readmings)从核心数据发送到应用程序服务层。在最近的版本中, 更多服务使用 EdgeX MessageBus 而不是 REST 进行服务间通信。
- 设备服务将事件/读数直接发布到 EdgeX MessageBus,而不是通过 REST 将其发送到 Core Data。
- 服务指标发布到 EdgeX MessageBus。
- 系统事件发布到 EdgeX MessageBus。
- 命令请求/响应 现在由核心命令和设备服务发布到 EdgeX MessageBus。
- 通过 EdgeX MessageBus 从核心元数据到设备服务的设备验证请求。
二、消息封装
发布到 EdgeX MessageBus 的所有消息都包装在 MessageEnvelope 中。此封装包含描述消息有效负载的元数据,例如有效负载内容类型(JSON 或 CBOR)、相关 ID 等。
三、实现原理
EdgeX MessageBus 由 go-mod-messaging 中实现的消息总线抽象定义。该模块定义了一个抽象客户端 API,目前有四种用于不同底层消息总线协议的 API 实现。
3.1 通用消息总线配置
常见 MessageBus 配置:
- 类型: Type - 指定要使用以下哪种实现。
- Redis Pub/Sub(默认)- Type=redis
- MQTT 3.1 - Type=mqtt