前段时间研究了Window Azure ServiceBus Messaging消息队列技术,搞了很多技术研究和代码验证,最近准备总结一下,分享给大家。

首先,Windows Azure提供了两种类型的消息队列机制:Azure Queues和ServiceBus Queues。

其中,Azure Queues,作为Azure Storage基础设施的一部分,提供了一套简单的基于Rest的Interface,面向不同的服务间提供可靠的、持久化的消息队列。

ServiceBus Queues作为Azure Messaging基础设施的一部分,支持队列和发布订阅模式,支持WebService和集成模式

本系列主要介绍ServiceBus Queues。关于二者的选型比较,各位可以参考:

https://azure.microsoft.com/zh-cn/documentation/articles/service-bus-azure-and-service-bus-queues-compared-contrasted

Service Bus(服务总线)支持两种不同的消息模式:relayed messaging and brokered messaging. 即:中继消息模式和代理消息模式。

中继消息模式Relayed messaging,最大的特点就是:收发消息要求服务端和客户端同时在线,不支持异步模式。

消息处理过程:

当Client发送请求到ServiceBus,Azure的负载均衡器将请求路由到任意一个网关节点(Gateway Nodes)。如果请求是一个监听类的请求,网关节点创建一个新的
中继(Relay)。如果请求是一个连接到指定中继(Relay)的请求,请求被转向指定中继所在的网关节点,这个网关节点发送一个交会的请求给监听Client,要求监听Client创建一个临时的通道来接收消息。当中继连接建立之后,

Client之间通过网关节点(Gateway Node)就可以交换消息了。

代理消息模式Borkered messaging:异步、解耦、消息发送者(Producer)和消费者(Consumer)不需要同时在线,消息存储在Broker中(代理),等待消息消费者消费处理。其核心组件包含:队列(Queue)、主题(Topic)、发布订阅等。

消息处理过程:

当Client发送请求到ServiceBus,Azure的负载均衡器将请求路由到任意一个网关节点(Gateway Nodes)。如果这个请求中包含一个消息实体(队列、主题、订阅),网关节点(Gateway Node)首先在网关存储(Gateway Store)中查找定位这个消息实体应该存储到哪个消息存储(Message Store)以及消息存储对应的消息代理节点(Messaging Broker),然后将消息发送到指定的消息代理节点,消息代理节点处理请求、存储消息并更新消息实体状态(Delivered)。消息代理节点发送一个响应返回给请求所在网关节点,进而再返回给请求的Client。

代理消息模式Borkered messaging是一种最常见的通用的消息模式,业界的ActiveMQ、RabbitMQ等消息中间件都支持,也是我们接下来深入研究的重点。

Azure Messaging-ServiceBus Messaging消息队列技术系列1-基本概念和架构的更多相关文章

  1. Window Azure ServiceBus Messaging消息队列技术系列1-基本概念和架构

    前段时间研究了Window Azure ServiceBus Messaging消息队列技术,搞了很多技术研究和代码验证,最近准备总结一下,分享给大家. 首先,Windows Azure提供了两种类型 ...

  2. Azure Messaging-ServiceBus Messaging消息队列技术系列-索引篇

    Azure Messaging ServiceBus Messaging相关的技术系列,最近已经整理了不少了,统一做一个索引链接,置顶. 方便查找,并后续陆陆续续再增加. 学习消息队列技术,可以先看第 ...

  3. Window Azure ServiceBus Messaging消息队列技术系列2-编程SDK入门

    各位,上一篇基本概念和架构中,我们介绍了Window Azure ServiceBus的消息队列技术的概览.接下来,我们进入编程模式和详细功能介绍模式,一点一点把ServiceBus技术研究出来. 本 ...

  4. Azure Messaging-ServiceBus Messaging消息队列技术系列3-消息顺序保证

    上一篇:Window Azure ServiceBus Messaging消息队列技术系列2-编程SDK入门  http://www.cnblogs.com/tianqing/p/5944573.ht ...

  5. Azure Messaging-ServiceBus Messaging消息队列技术系列4-复杂对象消息是否需要支持序列化和消息持久化

    在上一篇中,我们介绍了消息的顺序收发保证: Azure Messaging-ServiceBus Messaging消息队列技术系列3-消息顺序保证 在本文中我们主要介绍下复杂对象消息是否需要支持序列 ...

  6. Azure Messaging-ServiceBus Messaging消息队列技术系列8-服务总线配额

    上篇博文中我们介绍了Azure ServiceBus Messaging的消息事务机制: Azure Messaging-ServiceBus Messaging消息队列技术系列7-消息事务(2017 ...

  7. Azure Messaging-ServiceBus Messaging消息队列技术系列5-重复消息:at-least-once at-most-once

    上篇博客中,我们用实际的业务场景和代码示例了Azure Messaging-ServiceBus Messaging对复杂对象消息的支持和消息的持久化: Azure Messaging-Service ...

  8. Azure Messaging-ServiceBus Messaging消息队列技术系列6-消息回执

    上篇博文中我们介绍了Azure Messaging的重复消息机制.At most once 和At least once. Azure Messaging-ServiceBus Messaging消息 ...

  9. Azure Messaging-ServiceBus Messaging消息队列技术系列2-编程SDK入门

    各位,上一篇基本概念和架构中,我们介绍了Window Azure ServiceBus的消息队列技术的概览.接下来,我们进入编程模式和详细功能介绍模式,一点一点把ServiceBus技术研究出来. 本 ...

随机推荐

  1. elasticsearch更新doc文档

    在elasticsearch-head中: http://localhost:9200/my_index/products/2/ _update { "script" : { &q ...

  2. IIS添加Expires头

    今天的Web页面包含大量组件,并且数量不断增长:页面的初访问者会进行很多HTTP请求,但通过使用一个长久的Expires头,使这些组件可以被缓存.这会在后续的页面浏览中避免不必要的HTTP请求.长久的 ...

  3. opencv图片拼接报错cv::Stitcher::ERR_NEED_MORE_IMGS (1)

    #include "opencv2/imgcodecs.hpp" #include "opencv2/highgui.hpp" #include "o ...

  4. Verilog如何从外部更改模块内参数

    例如有一个模块 module x(a,b,c); input a,b; output c; 'd0, h=9'd3; ...... endmodule 两种解决方法: 1.使用带有参数值的模块实例语句 ...

  5. Linux上跑MySQL优化技巧

    1.禁止操作系统更新文件的atime属性 atime是Linux/UNIX系统下的一个文件属性,每当读取文件时,操作系统都会将读操作时间回写到磁盘上.对于读写频繁的数据库文件来说,记录文件的访问时间一 ...

  6. centos安装卸载Postgresql数据库PGSQL10

    这几天ytkah正在测试Odoo,而Odoo12一定要PGSQL10否则安装数据库的时候会出错,所以就直接安装gpsql10.首先卸载旧版本postgresql yum remove postgres ...

  7. 对比库表结构,生成SQL

    网上找了一圈对比库的工具,能手工生成差别的SQL的工具没有,改造了一下网上的sql 1, 获取字段名的类型 create FUNCTION [dbo].[getColType](@tab varcha ...

  8. 组合覆盖与PICT的使用

    组合覆盖法是一种有效减少测试用例个数的测试用例设计方法.根据覆盖程度的不同,可以分为单因素覆盖.成对组合覆盖.三三组合覆盖等.其中又以成对组合覆盖最常用. 关于组合覆盖的更多内容,参考:http:// ...

  9. asxios--form data提交,setcookie

    React native 项目,部分接口用form data 提交,以及在Android端,虽然设置了请求携带cookie,但每次请求携带的cookie跟初始化时都不一样,目前做法是去到初始化中返回的 ...

  10. ELKStack的基础入门和中文指南

    一.ELKStack的中文指南 redhat系列配置repo源 rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch vi / ...