上篇博文中我们介绍了Azure ServiceBus Messaging的消息事务机制:

Azure Messaging-ServiceBus Messaging消息队列技术系列7-消息事务(2017-03-30 22:12)

本文中我们介绍一下ServiceBus Messaging的一些配额,或者说使用说明和限制。原文请参考:

https://docs.microsoft.com/zh-cn/azure/service-bus-messaging/service-bus-quotas

我们着重介绍在实际消息应用开发时,会用到的、需要重点关注的几个配额选项。

1. 命名空间上限:即每个 Azure 订阅的基本/标准命名空间数上限:100,

2. 队列/主题大小,即我们使用的Queue或者Topic的容量,白话一点就是消息队列能承载多少消息,我们在实际应用时,一定要做一个评估,评估有两个方面,一个是我们业务高峰期会有多少消息,即消息的QPS,另一个是,未来1~2年,随着业务规模的扩张,现有的Queue/Topic的容量是否满足我们未来发展的要求。

Azure ServiceBus Messaging中已经显式的说明:系统将拒绝传入消息,且调用代码将收到异常。

队列/主题的大小,在声明时指定,Azure ServiceBus Messaging提供了1、2、3、4 或 5 GB选项,同时,如果已启用分区,最大队列/主题大小是 80 GB。

相信这个大小是Azure已经评估过的,大多数场景和规模都可以满足。

3. 并发连接数,并发连接数,Azure在命名控制和队列、主题、订阅这个层面统一做了限制。其中:

命名空间上的并发连接数:NetMessaging:1,000,AMQP:5,000

队列/主题/订阅实体上的并发连接数:受每个命名空间的并发连接限制的约束;

队列/主题/订阅实体上的并发接收请求数:5,000

当超过并发连接数时:系统将拒绝后续的附加连接请求,且调用代码将收到异常。 同时,REST 操作不计入并发 TCP 连接数。

这点大家要注意!

4. 每个服务命名空间的主题/队列数:即我们在每个服务的Namespace上可以创建多少个队列或者主题,这项配额是10000,服务命名空间中主题和队列的数目之和必须小于或等

于 10,000。如果超过这个配额:将拒绝后续的在服务命名空间中创建新主题或队列的请求。 因此,如果是通过 Azure 门户配置的,将生成错误消息。 如果是通过管理 API 调

用的,调用代码将收到异常。

这个队列数和主题数限制对于大规模消息应用的开发来说是有影响的,我们如果使用多个Namespace就可以横向扩展队列和主题的个数,这有点上业界主流的Sharding机制。赞

一个。

5. 任一消息实体路径的最大大小:队列或主题,即消息队列或者主题名称的长度是:260个字符

6. 队列/主题/订阅实体的消息大小:这个选项对我们来说非常重要,直接影响我们构造消息的大小。最大消息大小:256KB(标准层)/1MB(高级层)。 注意由于系统开销问

题,此限制通常略小一点,最大标头(消息头)大小:64KB,属性包(消息属性)中的最大标头属性数:byte/int.MaxValue,属性包中属性的最大大小:没有明确的限制。 受最

大标头大小限制。

7. 队列/主题/订阅实体的消息属性大小:每个属性的最大消息属性大小为 32K。 所有属性的累计大小不得超过 64K。如果超过这个配额:将生成 SerializationException 异

常。

8. 每个主题的订阅数:即每个Topic可以有多少订阅,2000,如果超过这个配额:

Azure将拒绝后续的为主题创建附加订阅的请求。 因此,如果是通过门户配置的,将显示错误消息。 如果是通过管理 API 调用的,调用代码将收到异常。

周国庆

2017/4/11

Azure Messaging的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  8. Azure Messaging-ServiceBus Messaging

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

  9. Azure Event Bus 技术研究系列1-Event Hub入门篇

    前两个系列研究了Azure IoT Hub和Azure Messaging.最近准备继续研究Azure Event Bus,即Azure的事件中心.首先, Azure Event Hub的官方介绍: ...

随机推荐

  1. maven 改本地仓库

    Maven缺省的本地仓库路径为${user.home}/.m2/repository. 本地仓库是远程仓库的一个缓冲和子集,当你构建Maven项目的时候,首先会从本地仓库查找资源,如果没有,那么Mav ...

  2. lambda表达式匿名函数

    匿名函数是一个“内联”语句或表达式,可在需要委托类型的任何地方使用.可以使用匿名函数来初始化命名委托,或传递命名委托(而不是命名委托类型)作为方法参数. C# 中委托的发展 在 C# 1.0 中,您通 ...

  3. ICML 2019 分析

    ICML 2019 分析 Word Embeddings Understanding the Origins of Bias in Word Embeddings Popular word embed ...

  4. 安装mysql数据库要注意的

    只安装基本功能即可,以后要的话可以加 需要配置环境变量 最好不要将数据存放在c盘,默认在  C:\ProgramData\MySQL\MySQL Server 5.6  里面存放建的表和存放的数据

  5. http-server 建立 HTTPS 服务

    1. 创建证书 进入要建立 HTTPS 服务的目录 openssl genrsa -out key.pem 1024 openssl req -new -key key.pem -out csr.pe ...

  6. WPF中的WndProc

    其实,在WPF中,要想利用WndProc来处理所有的事件,需要利用到SourceInitialized  Event,首先需要创建一个HwndSource对象,然后利用其AddHook方法来将所有的w ...

  7. Spring bean的自动装配属性

    bean的自动装配属性能简化xml文件配置. bean 的自动装配属性分为四种: 1.byName 2.byTyoe 3.constructor 4. autodetect byName: 它查找配置 ...

  8. springboot使用MockMvc测试controller

    通常,在我们平时开发项目时,如果想要输入URL对Controller进行测试,在代码编辑之后,需要重启服务器,建立http client进行测试.这样会使得测试变得很麻烦,比如,启动速度慢,测试验证不 ...

  9. JavaScript —— 用法 输出

    用法 必须在<script>标签内 可以在<body>和<head>部分中 不限数量 <script> ... </script> 即可,不 ...

  10. 浅谈html5在vr中的应用

    使用过HTML5制作动画过程的开发者都知道,HTML5页面给人一种逼真的感觉,同时HTML也是可以制作VR页面,但是需要你熟练HTML5与JavaScript开发过程,所以在有必要的情况下,我们可以用 ...