RocketMq(一)初识消息中间件

时间:2021-06-10 14:54:44

1、对消息的理解

  消息即为数据(data),数据有一定的规则、长度、大小。

  Java Message Service(Java消息服务)简称JMS,为Java 程序提供一种通用的方式,来创建、发送、接收以及读取企业消息系统的消息。

  标准JMSJSR914):https://www.jcp.org/en/jsr/detail?id=914 

  JMS 元素:

 

  1、Provider提供方:服务提供者

 

  2、Producer生产者:创建和发送JMS消息的客户端

 

  3、Consumer消费者:接收JMS消息的客户端

 

  4、Client客户端:生产或消费消息的应用&进程

 

  5、Message消息:服务端与客户端之间的传输数据对象

 

  6、Queue队列 :包含待读取消息的准备区域(点对点)

 

  7、Topic主题:发布消息的分布机制(发布&订阅)

  JMS提供五种消息主体:

  1、BytesMessage(字节)

  2、StreamMessage(流)

  3、TextMessage(文本、字符串)

  4、MapMessage(属性集合)

  5、ObjectMessage(对象)

 

2、对中间件的理解

  中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯,为我们提供发送消息的程序或者服务。

  主流消息中间件有:

  1、ActiveMq(严格jms jsr914

  2、RabbitMq

  3、RocketMq

  4、Kafka

  .....等多种不常是在开发中使用的消息中间件。

3、为什么要用消息中间件

  最重要的带来异步以及系统之间的解耦

  未使用MQ的系统之间调用情况图:

  RocketMq(一)初识消息中间件

  使用MQ的系统之间调用情况图:带来了异步(提高订单系统的性能),系统进行了解耦

  RocketMq(一)初识消息中间件

 

 

4、什么是RocketMq

  由国内阿里开源 java语言写的。贡献给apache ,作为apache 的维护开发。简称Rmq并没有严格遵循jms规范(参考)。本身电商背景有关。

  RcoketMQ 是一款低延迟、高可靠、可伸缩、易于使用的消息中间件,由java进行开发。

5、为什么选择RocketMq

  1、稳定无单点故障 不会因为某台机器或者某个节点宕机而影响系统正常使用

  2、 集群功能完善

  3、经历过双十一

  4、Java语言实现

  5、架构轻、源码可读性好

  7、生态圈完善,配套好

  8、开源社区活跃

 6、RocketMq的标准术语

  Producer

  消息生产者,生产者的作用就是将消息发送到 MQ,生产者本身既可以产生消息,如读取文本信息等。也可以对外提供接口,由外部应用来调用接口,再由生产者将收到的消息发送到 MQ。

  Producer Group

  生产者组,简单来说就是多个发送同一类消息的生产者称之为一个生产者组。在这里可以不用关心,只要知道有这么一个概念即可。

  Consumer

  消息消费者,简单来说,消费 MQ 上的消息的应用程序就是消费者,至于消息是否进行逻辑处理,还是直接存储到数据库等取决于业务需要。

  Consumer Group

  消费者组,和生产者类似,消费同一类消息的多个 consumer 实例组成一个消费者组。

  Topic

  Topic 是一种消息的逻辑分类,比如说你有订单类的消息,也有库存类的消息,那么就需要进行分类,一个是订单 Topic 存放订单相关的消息,一个是库存 Topic 存储库存相关的消息。

  Message

  Message 是消息的载体。一个 Message 必须指定 topic,相当于寄信的地址。Message 还有一个可选的 tag 设置,以便消费端可以基于 tag 进行过滤消息。也可以添加额外的键值对,例如你需要一个业务 key 来查找 broker 上的消息,方便在开发过程中诊断问题。

  Tag

  标签可以被认为是对 Topic 进一步细化。一般在相同业务模块中通过引入标签来标记不同用途的消息。

  Broker

  Broker 是 RocketMQ 系统的主要角色,其实就是前面一直说的 MQ。Broker 接收来自生产者的消息,储存以及为消费者拉取消息的请求做好准备。

  Name Server

  Name Server 为 producer 和 consumer 提供路由信息。

7、RocketMq官方文档

http://rocketmq.apache.org/docs/simple-example