当前位置: 首页 > news >正文

EdgeX Message Bus 消息总线

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

相关文章:

EdgeX Message Bus 消息总线

EdgeX Message Bus 消息总线 一、概述 EdgeX MessageBus 内部消息总线,用于 EdgeX 服务之间的内部通信。 EdgeX 服务是指来自 EdgeX 的任何核心/支持/应用程序/设备服务或使用 EdgeX SDK 构建的任何自定义应用程序或设备服务。 EdgeX MessageBus 用于内部 EdgeX 服务与服务之间…...

【JavaEE进阶】关于Maven

目录 🌴什么是Maven 🌲为什么要学Maven 🎍创建一个Maven项目 🎄Maven核心功能 🚩项目构建 🚩依赖管理 🎋Maven Help插件 🍀Maven 仓库 🚩本地仓库 &#x1f6a…...

YOLOv9-0.1部分代码阅读笔记-autoanchor.py

autoanchor.py utils\autoanchor.py 目录 autoanchor.py 1.所需的库和模块 2.def check_anchor_order(m): 3.def check_anchors(dataset, model, thr4.0, imgsz640): 4.def kmean_anchors(dataset./data/coco128.yaml, n9, img_size640, thr4.0, gen1000, verboseTrue…...

Electronjs+Vue如何开发PC桌面客户端(Windows,Mac,Linux)

electronjs官网 https://www.electronjs.org/zh/ Electron开发PC桌面客户端的技术选型非常适合已经有web前端开发人员的团队。能够很丝滑的过渡。 Electron是什么? Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 嵌入 Chromium 和 Node.…...

谷歌浏览器 安装谷歌浏览器特定版本后禁止自动更新

问题描述 我们通过离线安装谷歌浏览器后,第一次打开浏览器时会默认下载最新版本,等到我们重启浏览器后它会自动更新。在项目中为了能固定浏览器版本,所以要禁止谷歌浏览器的更新,网上找了好多方法都没用,自己摸索出来…...

Linux计算时间差

Linux计算时间差 1、Linux计算时间差2、时间差的应用 1、Linux计算时间差 在Linux中,计算时间差通常是为了统计、监控或调试。时间差可以用来衡量任务执行的时间,或者两个事件之间的间隔。例如,响应时间、执行时间、定时任务与延时处理等 以…...

Python的3D可视化库【vedo】2-5 (plotter模块) 坐标转换、场景导出、添加控件

文章目录 4 Plotter类的方法4.7 屏幕和场景中的坐标点转换4.7.1 屏幕坐标转为世界坐标4.7.2 世界坐标转为屏幕坐标4.7.3 屏幕坐标取颜色 4.8 导出4.8.1 导出2D图片4.8.2 导出3D文件 4.9 添加控件4.9.1 添加内嵌子窗口4.9.2 添加选择区4.9.3 添加比例尺4.9.4 为对象添加弹出提示…...

【VUE】13、安装nrm管理多个npm源

nrm(npm registry manager)是一个 npm 源管理器,它允许用户快速地在不同的 npm 源之间进行切换,以提高包管理的速度和效率。以下是对 nrm 使用的详细介绍: 1、安装nrm 在使用 nrm 之前,需要先确保已经安装…...

【SQL/MySQL 如何使用三种触发器】SQL语句实例演示

触发器介绍 – 触发器是与表有关的数据库对象,指在insert/update/delete之前(BEFORE)或之后(AFTER),触发并执行触发器中定义的SQL语句集合。 – 使用别名OLD和NEW来引用触发器中发生变化的记录内容,这与其他的数据库是相似的。现在触发器还只…...

Docker容器五种网络驱动模式详解

Docker 网络用于在容器之间以及容器与外部网络之间提供通信功能。它允许容器在隔离的网络环境中运行,同时也能根据需要与其他容器或外部网络进行交互。通过使用网络驱动,Docker 可以创建不同类型的网络,以满足各种应用场景的需求。 传统上&am…...

netfilter简介及流程图

Netfilter 是 Linux 内核中用于网络包过滤和操作的框架,由 Rusty Russell 于1998年创立,旨在改进旧的 ipchains 和 ipfwadm 实现。它采用模块化设计,具有良好可扩展性,并在2000年3月合并进Linux 2.3.x内核版本。 Netfilter的主要…...

Vue 前端代码规范

在 Vue 前端开发中,遵循代码规范可以提高代码的可读性、可维护性和团队协作效率。以下是一些详细的 Vue 前端代码规范,涵盖了多个方面: ### 1. **项目结构** - **目录结构**:- src/ 目录下应包含 components/、views/、store/、router/、ass…...

JAVA:组合模式(Composite Pattern)的技术指南

1、简述 组合模式(Composite Pattern)是一种结构型设计模式,旨在将对象组合成树形结构以表示“部分-整体”的层次结构。它使客户端对单个对象和组合对象的使用具有一致性。 设计模式样例:https://gitee.com/lhdxhl/design-pattern-example.git 2、什么是组合模式 组合模式…...

js常用方法之: 预览大图(uniapp原生方法封装)

方法: //预览图片 pic可传单个图片地址字符串 或 图片数组(带index) previewPic: function(pic, index) {if (!pic) return;if (index undefined) {let array [];array.push(pic);uni.previewImage({urls: array,current: array[0]});} else {uni.previewImage({urls: pic,…...

python 高级用法

1、推导列表 ans [ x for x in range(6)] print(ans)ans [ x for x in range(6) if x > 2] print(ans)ans [ x*y for x in range(6) if x > 2 for y in range(6) if y < 3] print(ans) 2、map 函数 a list(map(list,"abc")) print(a) b list(map(ch…...

TISAX认证最新消息

一、TISAX认证概述 TISAX&#xff08;Trusted Information Security Assessment Exchange&#xff09;认证是由德国汽车工业协会&#xff08;VDA&#xff09;主导开发的一种信息安全评估标准。该认证旨在确保汽车供应链中的信息安全&#xff0c;帮助汽车产业链中的企业保护其敏…...

Python中所有子图标签Legend显示详解

在数据可视化中&#xff0c;图例&#xff08;legend&#xff09;是一个非常重要的元素&#xff0c;它能够帮助读者理解图表中不同元素的含义。特别是在使用Python进行可视化时&#xff0c;matplotlib库是一个非常强大的工具&#xff0c;能够轻松创建包含多个子图的图表&#xf…...

python脚本中使用git命令

python脚本中使用git命令 一、背景 在做项目输入文件的版本管理的时候,我发现我需要用到库上面的文件来作为版本管理比较的输入,通常情况下,我是先根据tag将两个版本的文件拉取到本地,然后放进我的工程里在运行脚本来完成版本的比较,但是我发现这样其实很麻烦,所以就想着…...

本地maven项目打包部署到maven远程私库

目的&#xff1a;在自己的maven项目中&#xff0c;要把当前maven项目部署到maven私库&#xff0c;供其他人引入依赖使用。 首先要确保你当前能访问到你的私库&#xff0c;能拉私库的maven依赖即可。 maven部署命令&#xff1a; mvn deploy:deploy-file -Dmaven.test.skiptrue -…...

自己搭建专属AI:Llama大模型私有化部署

前言 AI新时代&#xff0c;提高了生产力且能帮助用户快速解答问题&#xff0c;现在用的比较多的是Openai、Claude&#xff0c;为了保证个人隐私数据&#xff0c;所以尝试本地&#xff08;Mac M3&#xff09;搭建Llama模型进行沟通。 Gpt4all 安装比较简单&#xff0c;根据 G…...

R语言clusterProfiler包KEGG富集分析报错?别慌,这份2024最新避坑指南帮你搞定

R语言clusterProfiler包KEGG富集分析2024避坑实战指南 当你在深夜的实验室里盯着RStudio不断弹出的红色报错信息&#xff0c;第十次尝试调整enrichKEGG参数却依然看到"replacement has length zero"这个令人绝望的提示时&#xff0c;可能已经忍不住要摔键盘了。这份…...

技能与代码审计融合实践:构建安全开发思维与实战靶场

1. 项目概述&#xff1a;技能与代码审计的融合实践最近在和一些做安全开发的朋友聊天&#xff0c;大家普遍有个感受&#xff1a;现在单纯会写代码&#xff0c;或者单纯懂点安全皮毛&#xff0c;已经越来越不够用了。一个功能上线&#xff0c;开发觉得逻辑完美&#xff0c;但安全…...

LunaTranslator终极指南:如何快速实现视觉小说实时翻译与语言学习

LunaTranslator终极指南&#xff1a;如何快速实现视觉小说实时翻译与语言学习 【免费下载链接】LunaTranslator 视觉小说翻译器 / Visual Novel Translator 项目地址: https://gitcode.com/GitHub_Trending/lu/LunaTranslator LunaTranslator是一款开源的视觉小说翻译工…...

RAG 系统性能优化完全指南:从“答非所问“到“精准命中“的六步进化

&#x1f3af; RAG 系统性能优化完全指南&#xff1a;从"答非所问"到"精准命中"的六步进化 一句话总结&#xff1a;本文用餐厅备菜的类比&#xff0c;拆解 RAG 系统六大优化环节——从智能切菜、混合找料、精选食材到严控火候&#xff0c;让你的 AI 回答又…...

如何彻底解决Windows电脑自动锁屏问题:终极鼠标模拟工具使用指南

如何彻底解决Windows电脑自动锁屏问题&#xff1a;终极鼠标模拟工具使用指南 【免费下载链接】mousejiggler Mouse Jiggler is a very simple piece of software whose sole function is to "fake" mouse input to Windows, and jiggle the mouse pointer back and f…...

基于RT-Thread与N32G457的三通道UART透明监控网关设计与实现

1. 项目概述与核心需求解析在嵌入式开发&#xff0c;特别是涉及工业控制、智能硬件或者多设备联调的现场&#xff0c;我们经常会遇到一个非常实际的痛点&#xff1a;如何在不干扰原有通信链路的前提下&#xff0c;实时监控两台设备之间的串口数据交互。无论是调试新的通信协议&…...

2026年Java面试高频考点终极整理(纯干货,建议直接背诵)

Java 面试 Java 作为编程语言中的 NO.1,选择入行做 IT 做编程开发的人&#xff0c;基本都把它作为首选语言,进大厂拿高薪也是大多数小伙伴们的梦想。以前 Java 岗位人才的空缺&#xff0c;而需求量又大&#xff0c;所以这种人才供不应求的现状&#xff0c;就是 Java 工程师的薪…...

3步终极指南:彻底解决Cursor Pro试用限制的技术实现方案

3步终极指南&#xff1a;彻底解决Cursor Pro试用限制的技术实现方案 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your t…...

如何快速掌握AMD处理器调试工具:从新手到专家的完整指南

如何快速掌握AMD处理器调试工具&#xff1a;从新手到专家的完整指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://…...

VR技术如何革新无障碍设计:Empath-D系统实践

1. VR技术赋能无障碍设计的创新实践作为一名长期关注人机交互技术的开发者&#xff0c;我亲历了VR技术从娱乐工具到专业设计辅助的转型过程。Empath-D系统的出现标志着无障碍设计进入了"共情式开发"的新阶段——开发者不再需要凭空想象用户需求&#xff0c;而是能真正…...