2.生产者
角色:
- 生产者是:消息队列系统中的消息创建者和发送者。
- 它负责:生成消息并将其发送到消息队列中。
功能:
- 创建消息:生产者负责创建包含所需信息的消息。
- 发送消息:将创建的消息发送到消息队列中,选择合适的队列或主题。
特点:
- 生产者和消息队列之间是松散耦合的关系,生产者无需关心消息的最终目的地,只需将消息发送到消息队列即可。
3.消息队列(Message Queue)
消息队列:是消息的中转站,负责存储、管理和传递消息。
消息队列,主要会涉及到:
- 存储消息:接收来自生产者的消息并存储在队列中。
- 管理消息:管理消息的传递、顺序、持久性等特性。
- 传递消息:将消息传递给已订阅或已注册的消费者。
4.消费者(Consumer)
消费者:是消息队列系统中的消息接收者和处理者。
主要会涉及到:
- 订阅消息:选择感兴趣的队列或主题进行订阅。
- 接收消息:从消息队列中接收消息,通常按照先进先出(FIFO)的原则。
- 处理消息:对接收到的消息进行处理,执行相应的业务逻辑。
二.消息队列类型
1)点对点模型
在点对点模型中,消息的发送者(生产者),将消息发送到一个特定的队列。
如下图所示:
应用场景:
- 任务分发:适用于任务分发模式,每个任务只被一个消费者执行。
- 点对点通信:适用于直接的点对点通信场景,例如请求和响应。
2)订阅-发布模型(Publish-Subscribe Model)
在发布/订阅模型中,消息的发送者(生产者)将消息发布到一个主题(Topic)。
如下图所示:
订阅发布模型,主要包含如下2大特点:
- 一对多关系:每条消息可以被多个消费者接收。
- 主题:消息被发布到一个主题,多个消费者可以订阅该主题。
应用场景:
- 实时广播:适用于需要将消息广播给多个消费者的场景,例如实时通知。
- 事件驱动:用于实现事件驱动架构,各个组件可以通过订阅感兴趣的主题来获取相关事件。
3)点对点和发布订阅的区别
点对点:
- 一对一关系,每条消息只有一个消费者能够接收。
- 消息的接收,导致该消息从队列中被移除。
- 适用于直接的、一对一的通信场景。
发布/订阅:
- 一对多关系,每条消息可以被多个消费者接收。
- 消息的接收并不导致消息从主题中被移除,允许多个消费者独立接收相同的消息。
- 适用于广播和一对多的通信场景,比如:实时通知、事件驱动等场景。
三.消息传输协议(Message Transport Protocol)
消息传输协议,是用于在不同系统或设备之间进行消息传递的规范和约定。
这些协议定义了:消息的格式、传递方式、数据结构和交互规则,以确保消息的可靠传递。
常用的协议,包含:AMQP、MQTT、STOMP等。
1.AMOP
AMQP,全称是Advanced Message Queuing Protocol,是一种开放的、标准化的消息传递协议。
AMQP支持点对点(Queue)和发布/订阅(Exchange)两种主要的消息模型。
AMQP,广泛应用于企业级系统,如RabbitMQ作为AMQP协议的实现。
AMOP它允许应用程序通过消息队列进行异步通信,还广泛应用于分布式系统、企业集成、微服务架构等场景。
2.MQTT
MQTT,全称是Message Queuing Telemetry Transport,是一种轻量级、开放的消息传输协议。
主要应用于物联网领域,用于连接和通信各种设备。
3.STOMP
STOMP,全称是Simple Text Oriented Messaging Protocol。
STOMP,设计为一种简单的、文本导向的消息传递协议,易于实现和理解。
STOMP通常用于简单的消息传递场景,不如AMQP和MQTT功能丰富,但在一些特定应用中能够提供足够的灵活性。
4.JMS
JMS,全称是Java Message Service,是Java平台上用于实现消息驱动规范。
JMS定义了一套用于创建、发送、接收和处理消息的标准接口,使得Java应用程序能够与不同消息中间件进行交互。
MQ消息队列有哪些1.ActiveMQ