美文网首页
java消息队列,JMS的通信模式

java消息队列,JMS的通信模式

作者: alcohol和cat | 来源:发表于2019-08-24 22:10 被阅读0次

    JMS具有两种通信模式:

    1、Point-to-Point Messaging Domain (点对点)

    2、Publish/Subscribe Messaging Domain (发布/订阅模式)

    在JMS API出现之前,大部分产品使用“点对点”和“发布/订阅”中的任一方式来进行消息通讯。JMS定义了这两种消息发送模型的规范,它们相互独立。任何JMS的提供者可以实现其中的一种或两种模型,这是它们自己的选择。JMS规范提供了通用接口保证我们基于JMS API编写的程序适用于任何一种模型。

    1.P2P模式

    P2P模式包含三个角色:消息队列(Queue),发送者(Sender),接收者(Receiver)。每个消息都被发送到一个特定的队列,接收者从队列中获取消息。队列保留着消息,直到他们被消费或超时。

    P2P的特点

    每个消息只有一个消费者(Consumer)(即一旦被消费,消息就不再在消息队列中)

    发送者和接收者之间在时间上没有依赖性,也就是说当发送者发送了消息之后,不管接收者有没有正在运行,它不会影响到消息被发送到队列

    接收者在成功接收消息之后需向队列应答成功

    如果希望发送的每个消息都会被成功处理的话,那么需要P2P模式。

    2.Pub/Sub模式

    包含三个角色主题(Topic),发布者(Publisher),订阅者(Subscriber) 多个发布者将消息发送到Topic,系统将这些消息传递给多个订阅者。

    Pub/Sub的特点

    每个消息可以有多个消费者

    发布者和订阅者之间有时间上的依赖性。针对某个主题(Topic)的订阅者,它必须创建一个订阅者之后,才能消费发布者的消息

    为了消费消息,订阅者必须保持运行的状态

    为了缓和这样严格的时间相关性,JMS允许订阅者创建一个可持久化的订阅。这样,即使订阅者没有被激活(运行),它也能接收到发布者的消息。

    如果希望发送的消息可以不被做任何处理、或者只被一个消息者处理、或者可以被多个消费者处理的话,那么可以采用Pub/Sub模型。

    相关文章

      网友评论

          本文标题:java消息队列,JMS的通信模式

          本文链接:https://www.haomeiwen.com/subject/bjlcectx.html