消息队列的JAVAEE规范JMS。JMS(Java message service,Java消息服务)API是一个消息服务的标准/规范,允许应用程序组件基于javaEE平台创建、发送、接收和读取消息。它使分布式通信耦合度更低,消息服务更加可靠以及异步性。
消息模型
在JMS标准中,有两种消息模型P2P(point to point),Publish/subscribe(pub/sub).
1.p2p模式
p2p模式包含三个角色:消息队列,发送者,截胡搜着,每个消息都被发送到一个特定的队列,接收这从队列中获取消息,队列保留着消息,直到他们被消费或者超时。
特点:
每个消息只有一个消费者,一点倍消费,消息就不再在消息队列中
发送者和截胡搜着之间在时间上没有依赖性,也就是说当发送者发送了消息之后,不管截胡搜着有没有正在运行,它不会营销到消息倍发送到队列。
接受者在成功接收消息之后需向队列应答成功
如果希望发送的每个消息都会被成功处理的话,那么需要p2p模式
2.pub/sub模式
包含三个角色主题(topic),发布者(publisher),订阅者(subscriber)多个发布者将消息发送到topic,系统将这些消息传递给多个订阅者。
特点:
每个消息可以有多个消费者
发布者和订阅者之间有时间上的依赖,针对某个主题的订阅,它必须创建一个订阅者之后,才能消费发布者的消息
为了消费的消息,订阅者必须保持运行的状态
为了缓和这样严格的时间相关性,JMS允许订阅者创建一个可持久化的订阅,这样,即使订阅者没有被激活
它也能接收到发布者的消息。
如果希望发送的消息可以不被做任何处理,或者只被一个消息者处理、或者可以被多个消费者处理的话,那么可以采用pub/sub模型。