什么是消息中间件以及详解

一、什么是消息中间件

关于消息中间件的概念,我查了很多的资料也没有给出一个清晰地概念。那我该怎么理解消息中间件的概念呢?这个问题就好比如我问一个已经单身了20多年的大兄弟什么是爱情一样,直接的概念给了也是模糊的,就比如下面百度百科对于消息中间件的定义:
"可与OA、ERP集成的免费消息中间件Active Messenger(简称AM)是一款非常实用的企业即时通讯软件。系统提供免费的消息中间件(以com组件的方式提供),开放给第三方程序使用。"
笔者也是能力有限,不能吃透上面的概念,那么不妨拆分理解一下:

消息:计算机之间进行相互通信的数据我们称之为消息,可以是数字,字母、字符串,或者是其他更为复杂的数据。
中间件:中间件我们可以理解为消息和消息之间的一个组件,这个组件主要负责对于消息的存储和管理功能。

总结一下:消息中间件是信息通讯(消息)的中间组件,负责消息的存储和管理。

二、消息中间件的组成

  • 消息服务器(broker):作为server提供消息核心服务。
  • 消息生产者( Producer):业务的发起方,负责生产消息传输给broker
  • 消息消费者(Consumer):业务的处理方,负责从broker获取消息并进行业务逻辑处理
  • 主题(Topic):发布订阅模式下的消息统一汇集地,不同生产者向topic发送消息,由MQ服务器分发到不同的订阅者,实现消息的 广播
  • 队列(Queue):PTP模式下,特定生产者向特定queue发送消息,消费者订阅特定的queue完成指定消息的接收
  • 消息体( Message):根据不同通信协议定义的固定格式进行编码的数据包,来封装业务数据,实现消息的传输

三、两种消息机制

1、点对点

什么是消息中间件以及详解_第1张图片

  • 每个消息只能有一个消费者,也就是说消息的一旦被消费,就不会存在于队列当中
  • 消费者和生产者之间没有时间上的依赖性,也就是说生产者发送消息之后不管有没有消费者正在运行,都不会影响消息进入队列中
  • 接收消息之后消费者需要向队列发送回执信息
  • 队列实现了负载均衡(下篇博客ActiveMQ集成java中会演示到)
  • 消费者无法消费自己存在之前生产者生产的消息
2、 发布订阅什么是消息中间件以及详解_第2张图片
  • 每个消息可以有多个消费者
  • 消费者和生产者之间有时间上的依赖性。针对于某个Topic的订阅者,他必须创建一个消费者之后才能消费生产者生产的消息
  • 为了缓和这种时间上的依赖性,JMS允许订阅者创建一个可持久化订阅。这样,及时消费者没有激活或者启动,他也能接收到生产者生产的消息

你可能感兴趣的:(消息中间件,消息中间件)