Azure 进阶攻略 | 关于Java 和事件中心的那不得不说的事
物联网技术辣么火,虽然之前有说过不少,但今天,仍有一个憋在我心里已久,不得不说的话题:基于Azure 的物联网平台必不可少,你可能已经在使用,但也许并没有意识到的服务:Azure 事件中心。
啊?事件中心是啥?
Azure 事件中心(Event Hubs)是一种高度可缩放的数据流式处理平台和事件引入服务,能够每秒接收和处理数百万事件。事件中心可以处理和存储分布式软件和设备生成的事件、数据或遥测;可以使用任何实时分析提供程序或批处理/存储适配器,转换和存储发送到数据中心的数据。由于能够以较低的延迟和极大的规模提供发布订阅功能,事件中心可以充当物联网和大数据的「入口」。
例如,我们可以通过 Azure 事件中心在移动应用中进行行为跟踪、从 Web 场采集流量信息,在电视游戏中捕获游戏内事件,或者从工业机器、互联汽车或其他设备中收集遥测数据。在上述这些应用中,事件中心在整个架构中的地位是这样的:
那使用什么语音进行开发?
目前,Azure 事件中心服务支持下列开发语言和平台,我们可以根据项目需求选择一种来使用:
语言 / 平台 |
客户端程序包 |
EventProcessorHost 包 |
存储库 |
.NET Standard |
|||
.NET framework |
不适用 |
||
Java |
|||
Node |
不适用 |
||
C |
不适用 |
不适用 |
哦~所以 Java 开发具体该怎么搞?
从上面的表中可以看到,Azure 事件中心是支持多种语言访问的,除了提供 REST API 外,还借助对 AMQP协议的支持为对应语言提供了 SDK。接下来就是今天要讲的重点了,Azure 事件中心是怎么支持 Java 编程开发的呢?
基于 Azure 事件中心的 Java 编程,主要可以使用下列三种 SDK:
原生 SDK
整合型 SDK
第三方 SDK(主要基于 AMQP 协议)
原生 SDK
目前官方的 SDK 是在命名空间 com.microsoft.azure 下的 azure-eventhubs(以下简称新 SDK)。它是基于QPID.Proton 实现的,这样就绕过了 JMS 因此也更直接。
源代码:https://github.com/Azure/azure-event-hubs-java/tree/master/azure-eventhubs
jar 包:https://mvnrepository.com/artifact/com.microsoft.azure/azure-eventhubs
在这个 SDK 推出之前曾有一个老的 SDK:位于命名空间 com.microsoft.eventhubs.client下的 eventhubs-client(以下简称老 SDK),这是基于 QPID.JMS 的老版本(qpid-amqp-1-0-client-jms)实现的。
另外微软官方还提供了 EventProcessorHost 的 Java 版本,跟新 SDK ** 在同一个命名空间下,叫 azure-eventhubs-eph。(以下简称 eph-SDK**)
源代码:https://github.com/Azure/azure-event-hubs-java/tree/master/azure-eventhubs-eph
Jar 包:https://mvnrepository.com/artifact/com.microsoft.azure/azure-eventhubs-eph
整合型 SDK
事件中心也支持与社区流行的数据处理框架相集成,因此也提供了相应的整合型 SDK,主要有两个:Apache Storm 和 SparkStreaming。
Apache Storm 整合 SDK(以下简称 Storm 整合 SDK)
源代码:https://github.com/apache/storm/tree/master/external/storm-eventhubs
Jar 包:https://mvnrepository.com/artifact/org.apache.storm/storm-eventhubs
Spark Streaming 整合 SDK(以下简称 Spark 整合 SDK)
Storm 整合 SDK 是基于老 SDK 实现的,而 Spark 整合 SDK 是基于新 SDK 实现的。这种差别主要是因为SDK 实现的时间先后造成的。
第三方 SDK
事件中心支持 AMQP 协议,因此也就支持第三方 AMQP 协议兼容的 SDK。目前事件中心 Java 编程里主要在用的 SDK 有两个,也有新老之分。
老 JMS SDK(qpid-amqp-1-0-client-jms)
根据该 SDK 的作者所说,他已经不再维护更新这个 SDK,而是主推新的 JMS SDK。所以即使当前这个 SDK还是有着广泛用途的,但推荐使用新的 JMS SDK。
Jar 包(需要以下四个包结合使用):
https://mvnrepository.com/artifact/org.apache.qpid/qpid-amqp-1-0-client
https://mvnrepository.com/artifact/org.apache.qpid/qpid-amqp-1-0-client-jms
https://mvnrepository.com/artifact/org.apache.qpid/qpid-amqp-1-0-common
https://mvnrepository.com/artifact/org.apache.geronimo.specs/geronimo-jms_1.1_spec
新 JMS SDK(qpid-jms-client)
接下来是 没有最干只有更干的干货
那么多不同 SDK,那么多新老版本,针对具体项目到底该选择哪个来用?呐,按照下表来选择吧,不要太崇拜我哦:
类型 |
名称 |
说明 |
原生 SDK |
azure-eventhubs |
官方最新 SDK,推荐使用 |
原生 SDK |
eventhubs-client |
老 SDK,缺乏维护,不推荐使用 |
原生 SDK |
azure-eventhubs-eph |
官方 EventProcessorHost 的 Java 实现,推荐使用 |
整合型 SDK |
storm-eventhubs |
适用于与 Apache Storm 整合使用 |
整合型 SDK |
spark-streaming-eventhubs |
适用于与 Spark Streaming 整合使用 |
第三方 SDK |
qpid-amqp-1-0-client-jms |
老 JMS SDK,不再维护,不推荐使用 |
第三方 SDK |
qpid-jms-client |
QPID 最新 JMS SDK,推荐使用 |
卖萌推荐
小编我砸骨卖血式整理的干货,不知客官有没有一丝丝感动?千万不要吝啬你的点赞资格哦!如果还有其他相关问题,或者你还有针对某种 Azure 服务开发遇到的问题,不妨通过留言告诉我哦,小编会不遗余力地为您解答~
最后,我手里还有一些其他基于 Azure 事件中心进行的编程资料,可根据实际需求参阅下列资源:
3、代码示例 立即访问http://market.azure.cn
Azure 进阶攻略 | 关于Java 和事件中心的那不得不说的事的更多相关文章
- Azure进阶攻略丨共享访问签名是个什么东东?
Azure 进阶攻略]一经推出便受到了广大粉丝的热情追捧,大家纷纷表示涨了姿势,并希望能了解更多的攻略~根据大家的投票结果,本期,小编将为大家讲解“如何生成 Shared Access Signatu ...
- Azure进阶攻略丨Azure网络通不通,PsPing&PaPing告诉你答案
很多时候,为了解决一些问题,要查各种文档,很麻烦你造吗!做「伸手党」又容易被鄙视,这时候就需要用到[Azure 进阶攻略]啦!特此,我们推出关于 Azure 常用操作指南的系列文章,每篇涉及一个 Az ...
- Azure进阶攻略 | 该如何唤醒你?因内核超时而沉睡的Linux虚拟机!
周五下午,当你收拾好东西准备下班,奔赴 Happy Hour 时,突然接到开发团队的电话: 对方:伙计救命啊,我在搭建开发环境,但 Azure 上的 Linux 虚拟机无法启动! 你(心里想着:你要加 ...
- Azure进阶攻略 | 你的程序也能察言观色?这个真的可以有!
前段时间有个网站曾经火爆微博和朋友圈:颜龄机器人.只要随便上传一张包含人面孔的照片,这个网站就可以分析图片,并判断照片中人物的年龄.化妆.美颜 P 图.帽子墨镜之类的配饰,几乎都没法影响这个网站的检测 ...
- Azure进阶攻略 | VS2015和Azure,想要在一起其实很容易
下雨天,巧克力和音乐很配…… 大冬天,男神和捧在手里的奶茶很配…… 「驴牌」的包包,和女神的全部衣服都配…… 对于「王首富」,容易实现的小目标和一个亿是绝配…… …… 醒醒吧!!这些事情和每天只会写代 ...
- Azure进阶攻略丨如何驾驭罢工的Linux虚机网卡?
很多人的生活中,流传着一个屡试不爽,据说可以解决任何问题的百宝锦囊: 所以经常可以听到类似这样的对话: -我的电脑咋上不去网了? -重启一下电脑. -还是不行呢! -重启一下路由器. -怎么还不行-_ ...
- Azure 进阶攻略 | 上云后的系统,「门禁」制度又该如何实现?
各位办公室白领们,不妨回想一下自己每天去公司上班时的一些细节. 为避免「闲杂人等」进入工作场所,我们需要证明自己是这家公司的员工才能进入,对吧!所有员工,无论所属部门或职位,都必须先证明自己身份,例如 ...
- Azure进阶攻略 | 应用流畅运行杜绝超载,自有一套好方法
世界上很多东西,无论交通工具.房屋建筑,甚至计算机程序,在容量方面都存在设计上的理论最大值. 比如火车,正常情况下是这样的.舒适地坐着,安静地读一本书,时不时抬头若有所思地远眺车窗外风景,满满的文艺范 ...
- Azure进阶攻略 | 下载还是在浏览器直接打开,MIME说了算!
多年来,从一开始的网络菜鸟发展成 Azure 云专家,想必你一定学到了很多知识.不知道在这个过程中你自己是否遇到过,或者被人问到过类似下面这样的问题: 同样是直接点击网页上提供的 .mp4 视频文件链 ...
随机推荐
- sparkContext之一:sparkContext的初始化分析
Spark源码学习:sparkContext的初始化分析 spark可以运行在本地模式local下,可以运行在yarn和standalone模式下,但是本地程序是通过什么渠道和这些集群交互的呢?那就是 ...
- 如何给容器服务的Docker增加数据盘
如何给容器服务的Docker增加数据盘 摘要: 我们知道Docker的数据是通过联合文件系统的方式存储到磁盘上,当需要在机器上运行的容器或者镜像的数量不断增加时,有可能磁盘的大小不再满足需求,这个时候 ...
- docker三剑客之一docker compose
compose有两个重要的概念: 服务(service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例 项目(project):由一组关联的应用容器组成的一个完整业务单元,在docker- ...
- Flutter实战视频-移动电商-21.分类页_类别信息接口调试
21.分类页_类别信息接口调试 先解决一个坑 取消上面的GridVIew的回弹效果.就是在拖这个gridview的时候有一个滚动的效果 physics: NeverScrollableScrollPh ...
- iOS 一次上传多张图片, 并返回进度值
我封装的使用AFNetworking上传多图的一个方法.带进度条回调,希望对你用帮助,我app中亲测可用,不知道你的服务器是如何接收数据的: /** * 上传带图片的内容,允许多张图片上传(URL)P ...
- Linux下更改mysql版本
想要更改linux的mysql版本,并不需要重装系统重新选择mysql版本,只需要删除掉原来的mysql然后在安装新的就可以啦 (谨记:一定要做好数据库备份) 详情请参照:大牛博客 over!over ...
- unity常用插件
Unity3D常用插件,网址:http://jingyan.baidu.com/article/7f766daf4ef2844100e1d079.html ,想想自己也有小半年unity经验了,于是整 ...
- printf汇总
Reference: http://www.cplusplus.com/reference/cstdio/printf/ printf("%02d:%02d:%02d.%03d", ...
- 【OpenJ_Bailian - 3468】电池的寿命(贪心)
电池的寿命 Descriptions: 小S新买了一个掌上游戏机,这个游戏机由两节5号电池供电.为了保证能够长时间玩游戏,他买了很多5号电池,这些电池的生产商不同,质量也有差异,因而使用寿命也有所不同 ...
- SpringBoot 2.0 整合sharding-jdbc中间件,实现数据分库分表
一.水平分割 1.水平分库 1).概念: 以字段为依据,按照一定策略,将一个库中的数据拆分到多个库中. 2).结果 每个库的结构都一样:数据都不一样: 所有库的并集是全量数据: 2.水平分表 1).概 ...