提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、MQTT
  • 二、使用步骤
    • 1.rabbitmq支持 MQTT 协议
    • 2.RMS监听消息和发送消息
    • 3.Web监听消息和发送消息
    • 4.RMS和WEB客户端启动后
  • 总结

前言

EAP是MES与设备的桥梁,EAP通过SECS国际标准协议与机台进行数据传输。我们公司RMS也是通过SECS国际标准协议与机台进行数据传输,只是多了本该在MES上的业务逻辑,放到了RMS上,架构上没这么使用EAP这样分工明确,RMS把业务逻辑拿掉改造下也能成为EAP,我就简单试试


提示:以下是本篇文章正文内容,下面案例可供参考

一、MQTT

1、使用消息队列
MES和其他系统通过消息队列来发送信息给RMS,RMS收到消息在通过SECS\GEM 与半导体设备通讯
优点:
1、对系统进行解耦,提高响应速度,系统功能向内聚合,对外开放;
2、对系统异步功能进行剥离,减少功能耦合,提供开发效率;
有优点也有缺点,具体可网上查,这就不系讲
MQTT协议是一种消息列队传输协议,采用订阅、发布机制,订阅者只接收自己已经订阅的数据,非订阅数据则不接收,既保证了必要的数据的交换,又避免了无效数据造成的储存与处理。因此在工业物联网中得到广泛的应用.
我使用的是rabbitmq,因为rabbitmq 支持 MQTT 协议,还有MQTT 协议还支持用于Web消息推送,实现起来也比较简单,既支持WEB,有支持客户端,还是通用的协议,任何系统都能使用此协议与RMS通讯

二、使用步骤

1.rabbitmq支持 MQTT 协议

代码如下(示例):

第一种 rabbitmq_mqtt 提供与后端服务交互使用,对应端口1883。rabbitmq-plugins enable rabbitmq_mqtt
第二种 rabbitmq_web_mqtt 提供与前端交互使用,对应端口15675。rabbitmq-plugins enable rabbitmq_web_mqtt

2.RMS监听消息和发送消息

在RMS加入代码如下(示例):


RMS监听到其他系统发过来消息,在通过SECS\GEM 与半导体设备通讯,机器返回结果后再通过MQTT将结果发给其他系统

3.Web监听消息和发送消息

代码如下(示例):

    <script type="text/javascript">// mqtt协议rabbitmq服务var brokerIp = "10.20.36.64";// mqtt协议端口号var port = 15675;// 接受推送消息的主题var topic = "test";// mqtt连接client = new Paho.MQTT.Client(brokerIp, port, "/ws", "clientId_" + parseInt(Math.random() * 100, 10));var options = {timeout: 3, //超时时间keepAliveInterval: 30, //心跳时间userName: "admin",  //用户名password: "admin",  //密码onSuccess: function () {console.log(("连接成功~"));client.subscribe("test1", { qos: 1 });},onFailure: function (message) {alert(message.errorMessage);console.log(("连接失败~" + message.errorMessage));}};// 考虑到https的情况if (location.protocol == "https:") {options.useSSL = true;}client.connect(options);console.log(("已经连接到" + brokerIp + ":" + port));// 连接断开事件client.onConnectionLost = function (responseObject) {console.log("失去连接 - " + responseObject.errorMessage);};// 接收消息事件client.onMessageArrived = function (message) {alert("222:"+message.payloadString);console.log("接受主题: " + message.destinationName + "的消息: " + message.payloadString);$("#arrivedDiv").append("<br/>" + message.payloadString);var count = $("#count").text();count = Number(count) + 1;$("#count").text(count);};// 推送给指定主题function sendMessage() {var a = $("#message").val();if (client.isConnected()) {var message = new Paho.MQTT.Message(a);message.destinationName = topic;client.send(message);alert(message);}else {alert("isConnected:" + client.isConnected());}}</script>

4.RMS和WEB客户端启动后

测试WEB端

测试RMS端

rabbitmq 在队列会产生mqtt-开头的队列,当你关闭客户端,这队列也随之消失。


总结

记录点点滴滴

RMS TO EAP通过MQTT简单实现相关推荐

  1. RMS TO EAP通过MQTT简单实现(2)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.系统的结构 二.使用步骤 1.启动设备 2.RMS To EAP 3.Web客户端去通讯 总结 前言 提示:这里可 ...

  2. Activemq MQTT 简单消息推送示例

    Activemq MQTT 简单消息推送示例 简介     简单使用 MQTT 连接 Activemq 进行消息推送的示例代码 编写详情 环境准备     使用docker启动Activemq,查看M ...

  3. 繁易MQTT简单操作说明

    繁易MQTT简单操作说明 一,emqttd的安装与部署 1,下载emqttd软件安装包 https://www.emqx.io/ 2,下载解压之后,cmd进入软件bin目录下,输入emqttd con ...

  4. 单片机与阿里云的mqtt简单通信(塔石nb-iot篇)

    目录 前期准备: 阿里云部分 塔石部分 单片机部分 这篇文章主要记录了一次单片机通过塔石的模块,实现与阿里云的mqtt通信(仅能简单传递信息,不涉及更深入操作)的过程. 其中会包括如,阿里云物联网平台 ...

  5. springboot下mqtt简单使用

    概述 mqtt是一个物联网协议. 简单来说它由三大块组成: 服务端(转发消息的server) 生产者(发送消息) 消费者(接收消息) 简单来说就是一个轻量级的收发消息的东西.发消息的人也可以消费消息. ...

  6. ArduinoUNO+ESP8266实现MQTT简单发布(不烧录ESP8266)

    分为以下部分: 1:接线并使用AT指令验证连接 2:使用软串口 3:搭建/配置/测试MQTT服务端 4:在Arduino实现MQTT的PUB客户端 5:总结 接线并使用AT指令验证连接 需要各种线+1 ...

  7. iOS中MQTT和WS的简单混合使用

    历经三天的寻找和尝试,终于完成了一个任务,任务要求的服务器访问用WebSocket的URL格式的,而访问结束后要进行订阅和消息发送,这更多出现在MQTT协议的框架里,例如这个文章 https://ww ...

  8. android mqtt详解_Android mqtt入门 Android studio(转)

    Android mqtt入门 Android studio 2018年04月09日 14:02:30 hbw020 阅读数:1564 分享 mqtt简单使用介绍: 1.as创建工程 2.官网下载mqt ...

  9. cpp mqtt paho 使用_MQTT--Paho C Client 的实现和详解

    概述 在文章Paho - MQTT C Cient的实现中,我介绍了如何使用Paho开源项目创建MQTTClient_pulish客户端.但只是简单的介绍了使用方法,而且客户端的结果与之前介绍的并不吻 ...

  10. MOTT介绍(2)window安装MQTT服务器和client

    MQTT目录: MQTT简单介绍 window安装MQTT服务器和client java模拟MQTT的发布,订阅 window安装MQTT服务器,我这里下载了一个 apache-apollo-1.7. ...

最新文章

  1. MonkeyRunner 的使用一
  2. hbase delete.deleteColumns问题
  3. 【转】计算机中浮点数的表示
  4. 【NLP】BERT 模型与中文文本分类实践
  5. oracle的EMCTL
  6. 详解C#防访问修饰符:public,private,protected,internal
  7. rk3399_android7.1的HDMI显示实现固定分辨率
  8. 在Unity进行平台打包发布的时候需要注意的一些细节问题
  9. php怎么把多个pdf拼接成一个,两张pdf合并成一页 怎么将pdf文件中的页面进行拼接?两页或多页pdf拼接...
  10. FIR与IIR滤波器
  11. Camera电路、图像传感器问题汇总
  12. 网站全国公安机关互联网站安全服务平台备案流程
  13. 算法交易的机遇和挑战
  14. 17-[案例1]奇虎导航案例
  15. (HTML)浏览器将多个空格压缩为一个空格
  16. css代码实现3D动画翻转 - 鱿鱼游戏卡片制作
  17. 计算机作业封面,西南交通大学离线作业封面-2016
  18. 温莎大学的计算机科学,温莎大学 University of Windsor
  19. Qt应用程序开发九:上传文件
  20. 关于 WEB/HTTP 调试利器 Fiddler 的一些技巧分享

热门文章

  1. 分布式自增序列id的实现(二) ---分布式序号生成器---基于Redis的自增功能
  2. linux系统格式化硬盘
  3. hdu Intelligent IME
  4. Android 开发艺术探索笔记(12),android开发教程百度网盘
  5. 虚拟机CentOS-7修改ip地址
  6. centos7下多播路由器安装及配置
  7. kb4524157安装失败_KB4551762安装失败怎么办_KB4551762更新无法安装解决方法 - 系统家园...
  8. 不同Costa环鉴相器鉴别特性
  9. 谈逻辑与数学界线之淡化
  10. 交换机生成树相关实验