跳转到主要内容

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

这是您第一次登陆到 developerWorks,已经自动为您创建了您的概要文件。 选择您概要文件中可以公开的信息的信息(如姓名、国家/地区,以及公司),这些信息同时也会与您所发布的内容相关联。 您可以随时更新您的 IBM 账号。

所有提交的信息确保安全。

  • 关闭 [x]

当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

所有提交的信息确保安全。

  • 关闭 [x]

使用 WebSphere MQ Telemetry 和 Pachube 连接远程传感器和设备

Nick Maynard, 高级软件工程师, IBM
http://www.ibm.com/developerworks/i/p-nmaynard.jpg
Nick Maynard 在英国 Hursley 的 IBM Software Solutions Transformation 团队工作。他的专长是 Web 编程、Linux、Web 服务和业务集成技术。

简介: Pachube 和附带 Broker 实现的 MQTT 协议都提供了聚合数据的一流设备,将数据从远程设备和传感器网络聚合到公共 API 中。但是,它们没有提供集成这两项技术之间的数据的方法。本文将展示如何使用新的 WebSphere MQ 遥测功能连接两个网络并共享数据,还提供了一个促进集成的可下载工具。

发布日期: 2011 年 9 月 13 日
级别: 中级 原创语言: 英文
访问情况 : 1759 次浏览
评论: 


简介

免费下载:IBM® WebSphere® MQ V7.0.1 试用版
下载更多的 IBM 软件试用版,并加入 IBM 软件下载与技术交流群组,参与在线交流。

IBM® WebSphere® MQ Telemetry 将 WebSphere MQ 提供的通用信息主干扩展到了大范围的远程遥感器、传动器和遥测设备。它使用 MQ 遥测传输 (MQTT) 协议支持您使用 IBM MQ 技术来监测企业传感器。 MQTT 是由 IBM 开发的信息传递协议,以前可用于 WebSphere Message Broker 并由 IBM 捐献给开源社区。WebSphere MQ Telemetry 包含一个客户端 Java 库,可用来开发支持 MQTT 的代码。

物联网

据 Juniper 网络的社会商业战略家 Adam Christensen 声称,“如其他人之前所说,如果 Web 1.0 的特点是将用户连接到内容,那么 Web 2.0 的特点就是将用户连接到用户,而 Web 3.0 的特点则是在对象之间互连以及将对象连接到用户: 物联网”。

为了用一种先进而又智能的方式监控和管理实际对象的复杂网络,物联网将重点放在了用细粒度的方式互连和检测对象上。

另一种日益流行的用来监测传感器和设备的技术是 Pachube。Pachube 和 MQTT 是物联网的支持技术,预计会成为 IBM 智慧地球计划设想的互联化、仪器化世界中的重要角色。

Pachube 现在拥有约 120,000 名用户(据 statshow.com 统计),越来越多的供应商(如 CurrentCost)用它来提供传感器互联。在许多不同的环境中,IBM MQTT 协议被用来连接各种传感器系统。

本文讨论了集成两个系统的难题,并提出了可能的解决方案,包括一个用来集成网络的工具。本文对使用这两个系统或仅仅比较它们的用户非常有用,所提及的工具对于集成两个系统的用户应该非常有用。

订阅并发布到 MQTT 主题

Pachube-MQTT 桥的系统设计包括将信息从 Pachube Feed 发布到 MQTT 主题,并侦听 MQTT 主题,以获得发布到 Pachube Feed 的信息。如下所示:


Pachube-MQTT 桥的系统设计,将 Pachube Feed 映射到 MQTT 主题,反之亦然
Pachube-MQTT 桥的系统设计

MQTT 的设计是从小组开始,用一种易于理解的方式用基于 “主题” 提供发布/订阅信息模型。由于协议是通过免版税许可证公开发布的,所以很多客户端和 Broker 实现因为它而存在。通常,会将个人数据来源映射到 MQTT 主题,这意味着每个传感器的信息来源都有自己的主题。

支持技术

新的 WebSphere MQ Telemetry 版本包含一个简单的 Java 客户端,您可以用这个库来监听更新,并将这些更新提交给主题。

订阅并发布到 Pachube Feed

连接 MQTT 和 Pachube 时,需要监听 Pachube Feed,以获得发布到 MQTT 主题上的信息,并将来自 MQTT 主题的信息发布到 Pachube Feed 上。

Pachube API 利用 HTTP 协议提供用来向系统发布 Feed 更新以及从系统检索 Feed 更新的接口。自动发布 Feed 更新只需使用 PUT 通过 HTTP 将数据推入即可。尽管可以通过 “轮询” 获得 Feed 更新,但 Pachube API 仍然提供了注册显式监听器的功能,支持 Pachube 将更新 “推入” 应用程序。监听器必需实现一个基本的 HTTP 协议子集,然后才能实现 Pachube API 这一部分。

支持技术

使用 Apache HttpClient 库将更新发布到 Pachube 系统,并使用 Jetty lightweight web 服务器实现监听组件。此外,Pachube 将 Feed 更新推入 JSON 封套中的监听器,因此您可以使用 Jackson JSON 库来实现该结构的反序列化。

集成网络

任何连接两个网络的尝试都必须考虑两个系统之间的差异,将此作为设计的一部分。

调节流量

作为协议,MQTT 没有节流功能。然而,Pachube 实现了对客户端的多级调节,从而减少了客户端系统的流量,并为他们的优质用户提供了区分器。节流在将更新发布到 Pachube 方面变现尤为明显,基本网站成员每分钟只允许更新三次。因此,任何集成都必须以智能的方式来处理发布节流;简单的实现可能会丢失更新,或无法更新接收更新的频率较低的 Feed。下面的算法提供了一个公平的解决方案,平衡了提供及时更新的需求与尽量减少信息丢失的需求:

  1. 在收到来自 MQTT 主题的更新时,要确定目标 Feed 并将更新添加到内部队列结构。如果目标 Feed 的队列中已经存在更新,则用新值替换它,但要保留原来的时间戳。
  2. 每次允许使用 Pachube 节流解决方案时(如果每分钟更新三次,则每 20 秒更新一次),都要从内部队列结构中获得带有 oldest 时间戳的更新,将它发布到 Pachube,并从内部队列结构中移除它。

这个算法并不是很完美,并存在某些边缘情况。然而对于中低吞吐量的大多数情况,这个算法应该足够用了。下面介绍的基本集成工具使用了类似的算法。

身份验证与授权

两种技术都提供了身份验证功能,但授权的级别不同。

MQTT 协议允许 Broker 使用用户名和密码有选择地控制访问,但在通过身份验证之后,所有操作均被授权。

Pachube 允许使用 Web 界面的任何用户读取当前的所有数据。对于自动实现,身份验证是使用 API 密钥来控制的。所有的 API 密钥都被授权,以注册用于任何 Feed 的监听器,其中一些 API 密钥都被授权是为了让 Feed 的所有者发布 Feed 更新。

因此,连接工具至少必须能够使您在每个 Feed 的基础上配置 Pachube API 密钥。

使用基本的集成工具

本文提供了一个基本工具,该工具使用上面描述的原则在 Pachube 网络和 MQTT 协议之间提供了一个简单的集成桥梁。您可以在下面下载它,并将它从压缩文件中提取出来,然后按照以下说明来安装和配置它:

  1. 安装:下载 lib/README.txt 文件中列出的 JAR 文件来运行程序。
  2. 配置:将 config.xml.dist 复制到 config.xml,并编辑它,使其满足您的需求。
  3. 执行:根据您的系统类型运行 bridge.bat 或 bridge.sh。
  4. 调试:编辑 log4j.properties 文件来设置每包的调试级别。

结束语

本文展示了如何使用新的 WebSphere MQ Telemetry 功能来连接 Pachube 和 MQTT 网络并共享它们之间的数据。本文还介绍了一个用来连接两个网络的基本工具。



下载

描述名字大小下载方法
Code samplemqttPachubeBridge.zip30KBHTTP

关于下载方法的信息


参考资料

学习

获得产品和技术

讨论

关于作者

http://www.ibm.com/developerworks/i/p-nmaynard.jpg

Nick Maynard 在英国 Hursley 的 IBM Software Solutions Transformation 团队工作。他的专长是 Web 编程、Linux、Web 服务和业务集成技术。

关于报告滥用的帮助

报告滥用

谢谢! 此内容已经标识给管理员注意。


关于报告滥用的帮助

报告滥用

报告滥用提交失败。 请稍后重试。


developerWorks:登录


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 使用条款

 


当您初次登录到 developerWorks 时,将会为您创建一份概要信息。您在 developerWorks 概要信息中选择公开的信息将公开显示给其他人,但您可以随时修改这些信息的显示状态。您的姓名(除非选择隐藏)和昵称将和您在 developerWorks 发布的内容一同显示。

请选择您的昵称:

当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

(长度在 3 至 31 个字符之间)


单击提交则表示您同意developerWorks 的条款和条件。 使用条款.

 


为本文评分

评论

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=WebSphere
ArticleID=757236
ArticleTitle=使用 WebSphere MQ Telemetry 和 Pachube 连接远程传感器和设备
publish-date=09132011
author1-email=nick.maynard_cnnew1@uk.ibm.com
author1-email-cc=