物联网技术辣么火,虽然之前有说过不少,但今天,仍有一个憋在我心里已久,不得不说的话题:基于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. synergy的配置使用

    1.http://blog.csdn.net/qq_16618179/article/details/54094636 2.两个版本要一致 3.synergy  fail to connect sec ...

  2. 8个超炫的 Web 效果

    CodePen 是一个在线的 HTML.CSS 和 JavaScript 代码编辑器,能够编写代码并即时预览效果.你在上面可以在线展示自己的作品,也可以看到其他人在网页中实现的各种令人惊奇的效果. 今 ...

  3. Tomcat-redis-Nginx

    环境:centos7, Tomcat7, redis-3.2,Nginx1.8,jdk-8u60-linux-x64 Nginx反向代理tomcat,redis作会话共享 一.Nginx安装 解决依赖 ...

  4. SCUT - 114 - 作业之数学篇 - 杜教筛

    https://scut.online/p/114 \(A(n)=\sum\limits_{i=1}^{n} \frac{lcm(i,n)}{gcd(i,n)}\) \(=\sum\limits_{i ...

  5. 1079 Total Sales of Supply Chain (25 分)

    A supply chain is a network of retailers(零售商), distributors(经销商), and suppliers(供应商)-- everyone invo ...

  6. TP5之数据库备份

    1.效果图 2.下载扩展类(  \extands\org\Baksql.php) 3.在  \public\static  里新建一个data 文件夹用来存放 .sql  的文件 4.使用方法 con ...

  7. lightoj1064 【DP求方案】

    题意: n个相同的骰子,问你掷出>=x点数的可能性: 思路: dp[i][j]代表前 i 个骰子掷出 j 点数的方案数; 然后Σdp[n][x]-dp[n][6*n]就好了 卧槽,一开始想的是拆 ...

  8. php 发送邮件(实例)

    html部分 <!DOCTYPE html> <html> <head> <title></title> <script type=& ...

  9. 51nod1639(组合数学)

    题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1639 题意:中文题诶- 思路:组合数学 n根鞋带要组成一个环, ...

  10. C#字体字号的改变

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...