一、点对点模式
点对点模式:生产者发送消息到消息队列,消费者从消息队列中接收、处理消息,消息被消费后,就不在消息队列中了。每个消息只能由一个消费者接收和处理。如果有多个消费者监听同一个队列,消息将被发送到其中一个消费者,而其他消费者无法接收到该消息。
特点:
1. 每个消息只有一个接收者,消息一旦被消费,消息就会被从消息队列中移除。
2. 发送者和接收者间没有依赖性,发送者发送消息之后,不管有没有接收者在运行,都不会影响到发送者下次发送消息。
3. 具有消息确认机制,消费者可以确认消息的接收和处理状态,接收者在成功接收消息之后需向队列应答成功,以便消息队列删除当前接收的消息,如果消费者处理失败,消息可以被重新发送。
适用于:
一对一通信,例如任务分发、异步处理等。
二、发布订阅模式
在发布订阅模式中,生产者将消息发送到一个主题(Topic)。订阅该topic的消费者才可以接收到消息。一个主题可以有多个订阅者,每个订阅者都会接收到发布到该主题的消息。
特点:
1. 每个消息可以有多个订阅者,所有订阅者都将接收到相同的消息副本。
2. 布者和订阅者之间是解耦的,彼此不直接交互(发布者只关注自己发到哪个topic,订阅者从哪个topic获取消息)。订阅者可以动态地订阅或取消订阅主题,而不需要对发布者进行修改。
3. 为了消费消息,订阅者需要提前订阅该角色主题,并保持在线运行;
适用于:
一对多通信,例如事件通知、广播等。