RocketMQ入门(2.快速入门)

来源:互联网 发布:诺基亚安装linux 编辑:程序博客网 时间:2024/04/26 08:56

本文档主要包含以下内容:

  • 如何开通 MQ 服务
  • 如何申请 MQ 资源
  • 如何通过 MQ 进行消息收发
MQ 快速接入流程图:


1.开通MQ服务
在阿里云官方网站开通MQ服务。

2.申请MQ资源
在 MQ 消息系统中,消息发布者将消息发送到某个指定的消息主题(Topic) ,而消息订阅者则通过订阅该指定的 Topic 来获取和消费消息。因此一个新的应用接入 MQ 需要先申请相关的 MQ 资源,包括消息主题(Topic)的创建,以及为 Topic 建立消息生产关系(Producer ID)和消息消费关系(Consumer ID)。
共分为以下几步:
创建Topic,创建Producter ID,创建Consumer ID,创建阿里云AccessKey,SecretKey。

3.MQ发送消息
MQ 提供两种发送消息的方式,即通过控制台发送消息或者调用 SDK/API 发送消息。在控制台申请 Topic 资源后,您可以在控制台发送消息来快速验证 Topic 资源的可用性。在生产环境下使用 MQ 则建议您调用相关的 SDK/API 进行消息发送。

4.MQ订阅消息
消息发送成功后,订阅方需要对消息进行订阅。订阅消息需要通过调用相关协议及开发语言的 SDK/API 来完成。

5.MQ消息查询
控制台上的三种查询方式:
  • 按照Message Topic查询消息:

通过Topic可以遍历查询这个Topic下的所有消息,如果Topic消息比较多,会查询出非常多的记录,此功能仅供您日常调试使用。
  • 按照Message Key查询消息:

发送消息时,如果指定了Key属性,那么就可以利用“Message Key查询“机制,唯一定位到这条消息,请尽可能让每条消息的Key唯一,如果多个消息都指定相同的Key,那么Key查询会查询出多条记录。
限制:Key查询至多返回64条记录。
  • 按照Message ID查询消息:

Producer发送消息时,会返回Message ID,根据Message ID可以在控制台上唯一查询到这条消息。Message Body是二进制形式,所以需要单独下载下来, 使用文本编辑器查看。

6.消息投递状态
  • NOT_ONLINE 订阅端不在线

  • CONSUMED 消息已经被投递

    订阅端返回ReconsumerLater,或者返回NULL,或者抛出异常,消息都会走重试流程,消息投递状态都是CONSUMED。

  • CONSUMED_BUT_FILTERED 消息已经被投递且被过滤

    比如,发布端发布消息topicA,tagA,订阅端订阅topicA,tagB

  • NOT_CONSUME_YET 消息未被投递

    有可能消息发生了堆积,还未被消费;也有可能消费线程hang住了,导致消费线程迟迟没有返回。

7.消息过滤

本文描述MQ消费者如何根据Tag在MQ服务端完成消息过滤。

Tag,即消息标签、消息类型,用来区分某个MQ的Topic下的消息分类。MQ允许消费者按照Tag对消息进行过滤,确保消费者最终只消费到他关心的消息类型。

以下图所示电商交易场景为例,从客户下单到收到商品这一过程会生产一系列消息,比如订单创建消息(order)、支付消息(pay)、物流消息(logistics)。这些消息会发送到Topic为Trade_Topic的队列中,被各个不同的系统所接收,比如支付系统、物流系统、交易成功率分析系统、实时计算系统等。其中,物流系统只需接收物流类型的消息(logistics),而实时计算系统需要接收所有和交易相关(order、pay、logistics)的消息。


针对消息归类,用户可以选择创建多个Topic, 或者在同一个Topic下创建多个Tag。但通常情况下,不同的Topic之间的消息没有必然的联系,而Tag则用来区分同一个Topic下相互关联的消息,比如全集和子集的关系,流程先后的关系。


以上源于官方文档:

https://help.aliyun.com/document_detail/34411.html?spm=5176.doc29543.6.94.7hMbB4


1 0
原创粉丝点击