Azure 进阶攻略 | 关于Java 和事件中心的那不得不说的事
2017-08-25 15:24
357 查看
物联网技术辣么火,虽然之前有说过不少,但今天,仍有一个憋在我心里已久,不得不说的话题:基于Azure 的物联网平台必不可少,你可能已经在使用,但也许并没有意识到的服务:Azure 事件中心。
例如,我们可以通过 Azure 事件中心在移动应用中进行行为跟踪、从 Web 场采集流量信息,在电视游戏中捕获游戏内事件,或者从工业机器、互联汽车或其他设备中收集遥测数据。在上述这些应用中,事件中心在整个架构中的地位是这样的:
![](https://images2017.cnblogs.com/blog/15323/201708/15323-20170825152311027-1722100841.png)
基于 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,那么多新老版本,针对具体项目到底该选择哪个来用?呐,按照下表来选择吧,不要太崇拜我哦:
卖萌推荐
小编我砸骨卖血式整理的干货,不知客官有没有一丝丝感动?千万不要吝啬你的点赞资格哦!如果还有其他相关问题,或者你还有针对某种 Azure 服务开发遇到的问题,不妨通过留言告诉我哦,小编会不遗余力地为您解答~
最后,我手里还有一些其他基于 Azure 事件中心进行的编程资料,可根据实际需求参阅下列资源:
1、上述所有 SDK 的使用示例
2、事件中心编程入门指南
3、代码示例 立即访问http://market.azure.cn
啊?事件中心是啥?
Azure 事件中心(Event Hubs)是一种高度可缩放的数据流式处理平台和事件引入服务,能够每秒接收和处理数百万事件。事件中心可以处理和存储分布式软件和设备生成的事件、数据或遥测;可以使用任何实时分析提供程序或批处理/存储适配器,转换和存储发送到数据中心的数据。由于能够以较低的延迟和极大的规模提供发布订阅功能,事件中心可以充当物联网和大数据的「入口」。例如,我们可以通过 Azure 事件中心在移动应用中进行行为跟踪、从 Web 场采集流量信息,在电视游戏中捕获游戏内事件,或者从工业机器、互联汽车或其他设备中收集遥测数据。在上述这些应用中,事件中心在整个架构中的地位是这样的:
![](https://images2017.cnblogs.com/blog/15323/201708/15323-20170825152311027-1722100841.png)
那使用什么语音进行开发?
目前,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
相关文章推荐
- java高级进阶关于java多线程的应用 ThreadLocal多线程实例详解
- 关于JAVA匿名内部类,回调,事件模式的一点讨论
- Azure进阶攻略 | 应用流畅运行杜绝超载,自有一套好方法
- 关于JAVA匿名内部类,回调,事件模式的一点讨论
- JAVA进阶8.7——事件处理(4)鼠标事件
- 关于java图形界面开发下拉框和文本域以及其响应事件
- 关于java多个面板组件添加后,其中组件事件监听器可能没用的问题!
- Azure进阶攻略 | VS2015和Azure,想要在一起其实很容易
- 关于JAVA匿名内部类,回调,事件模式的一点讨论 VS dotNET事件模式
- (转)java gui 关于事件监听的三种方法
- java基础学习总结——关于Java中事件分发和监听机制实现的代码实例
- 关于java进阶的一系列好博客
- 关于mapxtreme java不得不说的话
- Azure进阶攻略丨共享访问签名是个什么东东?
- Azure进阶攻略 | 下载还是在浏览器直接打开,MIME说了算!
- 关于Java的事件分派机制及两个可能的语言扩展
- Java进阶09 事件响应
- 关于JAVA中事件分发和监听机制实现的代码实例-绝对原创实用
- 整理:不得不说的~关于Java时间日期小结
- Azure 进阶攻略 | 上云后的系统,「门禁」制度又该如何实现?