阿里云消息队列kafka
<p>消息队列(Message Queue,简称 MQ)是阿里巴巴集团中间件技术部自主研发的专业消息中间件。产品基于高可用分布式集群技术,提供消息发布订阅、消息轨迹查询、定时(延时)消息、资源统计、监控报警等一系列消息云服务,是企业级互联网架构的核心产品。MQ 历史超过9年,为分布式应用系统提供异步解耦、削峰填谷的能力,同时具备海量消息堆积、高吞吐、可靠重试等互联网应用所需的特性,是阿里巴巴双11使用的核心产品</p>
<p>MQ 是阿里云正式商用的产品,目前在阿里云多个地域(Region)提供了高可用消息云服务,单个域内采用多机房部署,可用性极高,即使整个机房都不可用,仍然可以为应用提供消息发布服务,产品稳定性及可用性完全按照阿里巴巴内部标准来实施,无单点。</p>
<p>MQ 目前提供 TCP、HTTP、MQTT 三种协议层面的接入方式,支持 Java、C++ 以及 .NET 不同语言,方便不同编程语言开发的应用快速接入 MQ 消息云服务。用户可以将应用部署在阿里云 ECS、企业自建云,或者嵌入到移动端、物联网设备中与 MQ 建立连接进行消息收发,同时本地开发者也可以通过公网接入 MQ 服务进行消息收发。</p>
<h3>公共云用户请按以下步骤开通 MQ 服务:</h3>
<p>登录阿里云主页(<a href="http://www.aliyun.com/">http://www.aliyun.com/</a> ),将鼠标依次移动到产品 > 互联网中间件,单击消息队列进入 MQ 产品主页。
在 MQ 产品页上,单击立即开通进入 MQ 服务开通页面,根据提示完成开通服务。
如果您已经开通 MQ 服务,请直接登录 MQ 控制台。</p>
<h3>创建 Topic</h3>
<p>消息主题(Topic)是 MQ 里对消息进行的一级归类,比如可以创建“Topic_Trade”这一主题用来识别交易类消息。使用 MQ 的第一步需要先为您的应用创建 Topic 资源,即创建 Topic。</p>
<p>您可以按照以下步骤创建 Topic:</p>
<p>登录 MQ 控制台,默认进入Topic 管理页面。</p>
<p>在页面左上角选择相应的域(比如公网域),然后单击页面右上角的创建 Topic 按钮。</p>
<p>注意:</p>
<p>如果只是测试,或者需要在本地(非阿里云 ECS 服务器)使用 MQ 服务,请将 Topic 创建在公网环境。生产端和消费端可以部署在本地或者部署在任意地域的 ECS 上,前提是本地服务器或者相应的 ECS 需要能够访问公网。
如果在生产环境使用 MQ 服务,需要将应用程序部署在阿里云 ECS 上,同时 Topic 也需要在应用程序所在的区域(即所部署的 ECS 区域)进行创建。
Topic 不能跨域使用。比如 Topic 创建在“华北 2”这个域,那么消息生产端和消费端也必须运行在“华北 2”的 ECS 上。
有关域的详细介绍请参见 ECS 文档中的地域和可用区。
在创建 Topic 对话框输入 Topic 名称及描述,单击确定。您创建的 Topic 将出现在 Topic 列表中。
<img src="https://www.showdoc.cc/home/common/visitfile/sign/5598620fccb4c74955b09a9cde68ece5?showdoc=.jpg" alt="" /></p>
<p>注意:Topic 名称必须全局唯一。如果名称已经被其他用户使用,您将无法创建相同名称的 Topic。</p>
<p>创建 Producer ID
创建好 Topic 后,要为这个 Topic 创建消息生产端的资源,即创建 Producer ID。一个 Topic 只能对应一个 Producer ID。</p>
<p>请按照以下步骤为您的 Topic 创建 Producer ID:
<img src="https://www.showdoc.cc/home/common/visitfile/sign/5a19dfabc6d2188355d90771f0d0c752?showdoc=.jpg" alt="" />
点击申请发布
在申请发布对话框输入 Producer ID,单击确定。
示例 Producer ID: PID_POS</p>
<p>注意:
Producer ID 必须全局唯一。如果名称已存在,您将无法创建相同名称的 Producer ID。
Topic 对应的生产端必须和这个 Topic 在同一个域,比如您在“公网”域创建了“Topic_open”,那么和“Topic_open”对应的 Producer ID 也必须在同一个域。
Producer ID 和 Topic 的关系是 1:N,即一个 Topic 只能绑定一个 Producer ID, 但是同一个 Producer ID 可以对应多个 Topic。</p>
<p>创建 Consumer ID
创建好消息生产关系后,您需要为 Topic 创建相应的消息消费资源,即创建 Consumer ID。</p>
<p>请按以下步骤创建 Consumer ID:
<img src="https://www.showdoc.cc/home/common/visitfile/sign/5a19dfabc6d2188355d90771f0d0c752?showdoc=.jpg" alt="" />
点击申请订阅
在申请订阅对话框输入 Consumer ID,单击确定。
示例 Consumer ID:: CID_WEIXIN</p>
<pre><code>注意:
Consumer ID 必须全局唯一。如果名称已存在,您将无法创建相同名称的 Consumer ID。
Consumer ID 必须和对应的 Topic 在同一个域,比如给“公网”域的“Topic_open”绑定 Consumer ID “CID_123”后,“华北1”域内的“Topic_huabei1”将不能绑定同一个 Consumer ID。
Consumer ID 和 Topic 的关系是 N:N。同一个 Consumer ID 可以订阅多个 Topic,同一个 Topic 也可以对应多个 Consumer ID。
![]
消息队列支持云账户(主账号)将 Topic 资源授权给 RAM 用户(子账号),有权限的 RAM 用户可在消息队列控制台上进行资源的管理,以及通过 SDK 进行消息的发布与订阅。
授权策略
消息队列目前支持三种授权策略,您可以按照以下步骤查看:
登录RAM 控制台,点击进入策略管理&gt;系统授权策略。
在策略名或备注的搜索框中输入“MQ”, 单击搜索。您便可以看到目前消息队列支持的三种授权策略。
关于这三种授权策略的具体说明如下:
AliyunMQFullAccess,消息队列的管理权限,被授予该权限的 RAM 用户除了具有主账户所有资源的所有操作权限外,还可以代替主账户在消息队列的控制台上进行资源的管理,比如创建和删除 Topic 等,需要注意的是该 RAM 用户创建的资源所有者为主账户。
AliyunMQPubOnlyAccess,消息队列的发布权限,被授予该权限的 RAM 用户具有主账户所有资源的发布权限,包括 MQ 控制台上创建生产者以及通过 SDK 进行消息发送的权限。
AliyunMQSubOnlyAccess,消息队列的订阅权限,被授予该权限的 RAM 用户具有主账号所有资源的订阅权限,包括 MQ 控制台上创建消费者以及通过 SDK 进行消息订阅的权限。
建议:
您可通过组合 AliyunMQPubOnlyAccess、AliyunMQSubOnlyAccess 两种策略,将主账户所有资源的发布和订阅权限授予给 RAM 用户。
与 AliyunMQFullAccess 策略相比,这种组合策略并不会将消息队列的管理权限授予 RAM 用户,也就是说组合策略没有 Topic 资源的创建、删除等管理操作权限。</code></pre>