一、P2P(Piont to Point)点对点模式
P2P模式包含三个角色:消息队列(Queue),发送者(Sender),接收者(Receiver)。
每一个消息都被发送到特定的队列,接收者从队列获取消息。队列保留着消息,直到他们被消费或者超时。
P2P的特点:
- 每一个消息只有一个消费者(Consumer)(即一旦被消费消息就不在队列中)
- 发送者和接收者之间在时间上没有依赖,也就是说当发送者发送了消息之后,不管接收者有没有在运行它不会影响消息被发送到队列。
- 接收者在成功接收消息之后需要相队列应答成功。
如果需要发送的每一条消息都被处理的话需要P2P模式
二、Publish/Subscribe(Pub/Sub)发布订阅模式
Pub/Sub模式包含三个角色:主题(Topic),发布者(Publisher),订阅者(Subscriber)。
多个发布者将消息发送到Topic,系统将这些消息传递给多个订阅者。
Pub/Sub的特点
- 每个消息可以有多个消费者
- 发布者和订阅者之间有时间上的依赖性。针对某个主题(Topic)的订阅者,它必须创建一个订阅之后才能消费发布者的消息
- 为了消费消息,订阅者必须保持运行状态。
为了缓解这样严格的时间相关性,JMS允许订阅者创建一个可持久化的订阅。这样即使订阅者没有被激活(运行),它也能接受到发布者的消息。
如果希望发布的消息被多个可以被多个消费者处理的话,那么可以采用Pub/Sub模型。