物联网技术辣么火,虽然之前有说过不少,但今天,仍有一个憋在我心里已久,不得不说的话题:基于Azure 的物联网平台必不可少,你可能已经在使用,但也许并没有意识到的服务:Azure 事件中心。

啊?事件中心是啥?

Azure 事件中心(Event Hubs)是一种高度可缩放的数据流式处理平台和事件引入服务,能够每秒接收和处理数百万事件。事件中心可以处理和存储分布式软件和设备生成的事件、数据或遥测;可以使用任何实时分析提供程序或批处理/存储适配器,转换和存储发送到数据中心的数据。由于能够以较低的延迟和极大的规模提供发布订阅功能,事件中心可以充当物联网和大数据的「入口」。

例如,我们可以通过 Azure 事件中心在移动应用中进行行为跟踪、从 Web 场采集流量信息,在电视游戏中捕获游戏内事件,或者从工业机器、互联汽车或其他设备中收集遥测数据。在上述这些应用中,事件中心在整个架构中的地位是这样的:

那使用什么语音进行开发?

目前,Azure 事件中心服务支持下列开发语言和平台,我们可以根据项目需求选择一种来使用:

语言 / 平台

客户端程序包

EventProcessorHost 包

存储库

.NET Standard

NuGet

NuGet

GitHub

.NET framework

NuGet

NuGet

不适用

Java

Maven

Maven

GitHub

Node

NPM

不适用

GitHub

C

不适用

不适用

GitHub

哦~所以 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 因此也更直接。

在这个 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**)

整合型 SDK

事件中心也支持与社区流行的数据处理框架相集成,因此也提供了相应的整合型 SDK,主要有两个:Apache Storm 和 SparkStreaming。

Apache Storm 整合 SDK(以下简称 Storm 整合 SDK

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 事件中心进行的编程资料,可根据实际需求参阅下列资源:

1、上述所有 SDK 的使用示例

2、事件中心编程入门指南

3、代码示例                       立即访问http://market.azure.cn

Azure 进阶攻略 | 关于Java 和事件中心的那不得不说的事的更多相关文章

  1. Azure进阶攻略丨共享访问签名是个什么东东?

    Azure 进阶攻略]一经推出便受到了广大粉丝的热情追捧,大家纷纷表示涨了姿势,并希望能了解更多的攻略~根据大家的投票结果,本期,小编将为大家讲解“如何生成 Shared Access Signatu ...

  2. Azure进阶攻略丨Azure网络通不通,PsPing&PaPing告诉你答案

    很多时候,为了解决一些问题,要查各种文档,很麻烦你造吗!做「伸手党」又容易被鄙视,这时候就需要用到[Azure 进阶攻略]啦!特此,我们推出关于 Azure 常用操作指南的系列文章,每篇涉及一个 Az ...

  3. Azure进阶攻略 | 该如何唤醒你?因内核超时而沉睡的Linux虚拟机!

    周五下午,当你收拾好东西准备下班,奔赴 Happy Hour 时,突然接到开发团队的电话: 对方:伙计救命啊,我在搭建开发环境,但 Azure 上的 Linux 虚拟机无法启动! 你(心里想着:你要加 ...

  4. Azure进阶攻略 | 你的程序也能察言观色?这个真的可以有!

    前段时间有个网站曾经火爆微博和朋友圈:颜龄机器人.只要随便上传一张包含人面孔的照片,这个网站就可以分析图片,并判断照片中人物的年龄.化妆.美颜 P 图.帽子墨镜之类的配饰,几乎都没法影响这个网站的检测 ...

  5. Azure进阶攻略 | VS2015和Azure,想要在一起其实很容易

    下雨天,巧克力和音乐很配…… 大冬天,男神和捧在手里的奶茶很配…… 「驴牌」的包包,和女神的全部衣服都配…… 对于「王首富」,容易实现的小目标和一个亿是绝配…… …… 醒醒吧!!这些事情和每天只会写代 ...

  6. Azure进阶攻略丨如何驾驭罢工的Linux虚机网卡?

    很多人的生活中,流传着一个屡试不爽,据说可以解决任何问题的百宝锦囊: 所以经常可以听到类似这样的对话: -我的电脑咋上不去网了? -重启一下电脑. -还是不行呢! -重启一下路由器. -怎么还不行-_ ...

  7. Azure 进阶攻略 | 上云后的系统,「门禁」制度又该如何实现?

    各位办公室白领们,不妨回想一下自己每天去公司上班时的一些细节. 为避免「闲杂人等」进入工作场所,我们需要证明自己是这家公司的员工才能进入,对吧!所有员工,无论所属部门或职位,都必须先证明自己身份,例如 ...

  8. Azure进阶攻略 | 应用流畅运行杜绝超载,自有一套好方法

    世界上很多东西,无论交通工具.房屋建筑,甚至计算机程序,在容量方面都存在设计上的理论最大值. 比如火车,正常情况下是这样的.舒适地坐着,安静地读一本书,时不时抬头若有所思地远眺车窗外风景,满满的文艺范 ...

  9. Azure进阶攻略 | 下载还是在浏览器直接打开,MIME说了算!

    多年来,从一开始的网络菜鸟发展成 Azure 云专家,想必你一定学到了很多知识.不知道在这个过程中你自己是否遇到过,或者被人问到过类似下面这样的问题: 同样是直接点击网页上提供的 .mp4 视频文件链 ...

随机推荐

  1. kafka之二:Kafka 设计与原理详解

    一.Kafka简介 本文综合了我之前写的kafka相关文章,可作为一个全面了解学习kafka的培训学习资料. 转载请注明出处 : 本文链接 1.1 背景历史 当今社会各种应用系统诸如商业.社交.搜索. ...

  2. NHibernate错误:Could not compile the mapping document的解决

    用动软代码生成器的NHibernate生成模板,生成一个“XML映射模板”,老是提示Could not compile the mapping document的问题. 各种的找,就是没找到问题. 后 ...

  3. Log4j1的使用与log4j.properties的配置

    这里介绍Log4j1(即Log4j 1.x版本),这里以普通的Java项目为例,用eclipse编写,项目结构如下图所示: 该项目主要包括: java文件:Log4jv1Util 以及 Log4jv1 ...

  4. Codevs 1425 最长公共子串

    1425 最长公共子串  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 青铜 Bronze 题解       题目描述 Description 输入N(2<=N<= ...

  5. 2012 Noip提高组 Day2

    1265. [NOIP2012] 同余方程 ★☆   输入文件:mod.in   输出文件:mod.out   简单对比时间限制:1 s   内存限制:128 MB [题目描述] 求关于 x 的同余方 ...

  6. 洛谷P3232 [HNOI2013]游走(高斯消元+期望)

    传送门 所以说我讨厌数学……期望不会高斯消元也不会……好不容易抄好了高斯消元板子被精度卡成琪露诺了…… 首先,我们先算出走每一条边的期望次数,那么为了最小化期望,就让大的期望次数乘上小编号 边的期望次 ...

  7. Integrated Metabolomics and Lipidomics Analyses Reveal Metabolic Reprogramming in Human Glioma with IDH1 Mutation (文献分享一组-黄旭蕾)

    题目:Integrated Metabolomics and Lipidomics Analyses Reveal Metabolic Reprogramming in Human Glioma wi ...

  8. perl C/C++ 扩展(一)

    通过h2xs 中间件,我们可以快速的使用c或则C++ 库来实现perl 扩展功能 第一讲:跑通hello world 程序******************************我们使用命令:h2 ...

  9. C 语言实例 - 二进制与十进制相互转换

    C 语言实例 - 二进制与十进制相互转换 C 语言实例 C 语言实例 二进制转与十进制相互转换. 实例 - 二进制转换为十进制 #include <stdio.h> #include &l ...

  10. (转)linux du命令

    转自 http://www.cnblogs.com/peida/archive/2012/12/10/2810755.html Linux du命令也是查看使用空间的,但是与df命令不同的是Linux ...