您的位置:首页 > 编程语言 > Java开发

Azure 进阶攻略 | 关于Java 和事件中心的那不得不说的事

2017-08-25 15:24 357 查看
物联网技术辣么火,虽然之前有说过不少,但今天,仍有一个憋在我心里已久,不得不说的话题:基于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 因此也更直接。

源代码: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)实现的。

源代码:https://github.com/hdinsight/eventhubs-client

Jar 包:https://mvnrepository.com/artifact/com.microsoft.eventhubs.client/eventhubs-client

另外微软官方还提供了 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

源代码:https://github.com/hdinsight/spark-eventhubs

Jar 包:https://mvnrepository.com/artifact/com.microsoft.azure/spark-streaming-eventhubs_2.11

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)

源代码:https://github.com/apache/qpid-jms

Jar 包:https://mvnrepository.com/artifact/org.apache.qpid/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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: