消息中间件 — JMS规范

JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。

JMS的优势

  • 异步:要接收消息,客户端不需要发送请求。消息将自动到达客户端。

  • 可靠:它提供保证消息被传递。

JMS架构

JMS应用程序由以下部分组成:

  • A JMS provider: A messaging system that implements the JMS specification.

  • JMS clients: Java applications that send and receive messages.

  • Messages: Objects that are used to communicate information between JMS clients.

  • Administered objects: Preconfigured JMS objects that are created by an administrator for the use of JMS clients.

消息传递模型

JMS支持两种不同的消息传递模型:

1、Point-to-Point(P2P)

2、Publish/Subscribe(Pub/Sub)

P2P模型

在P2P模型中,一条消息仅传递给一个接收者。队列负责保存该消息,直到接收器准备就绪。

在这里,队列被用作面向消息的中间件(MOM)。

P2P的特点:

  1. 每个消息只有一个消费者(Consumer)(即一旦被消费,消息就不再在消息队列中)。
  2. 提供者和消费者之间在时间上没有依赖性,也就是说当提供者发送了消息之后,不管消费者有没有正在运行,它不会影响到消息被发送到队列。
  3. 每条消息仅会传送给一个消费者。可能会有多个消费者在一个队列中侦听,但是每个队列中的消息只能被队列中的一个消费者所消费。
  4. 消息存在先后顺序。一个队列会按照消息服务器将消息放入队列中的顺序,把它们传送给消费者。当已被消费时,就会从队列头部将它们删除(除非使用了消息优先级)。
  5. 消费者在成功接收消息之后需向队列应答成功。

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

Publish/Subscribe

在Pub / Sub模型中,一条消息被传递给所有订阅者。这就像广播。在这里,主题被用作负责保存和传递消息的面向消息的中间件。

Publish/Subscribe的特点:

  1. 每个消息可以有多个消费者;
  2. 发布者和订阅者之间有时间上的依赖性。针对某个主题的订阅者,它必须创建一个订阅者之后,才能消费发布者的消息,而且为了消费消息,订阅者必须保持运行的状态。
  3. 为了缓和这样严格的时间相关性,JMS允许订阅者创建一个可持久化的订阅。这样,即使订阅者没有被激活(运行),它也能接收到发布者的消息。
  4. 每条消息都会传送给称为订阅者的多个消息消费者。订阅者有许多类型,包括持久型、非持久型和动态型。
  5. 发布者通常不会知道、也意识不到哪一个订阅者正在接收主题消息。
  6. 消息被推送给消费者,这意味着消息会传送给消费者,而无须请求。

JMS编程模式


如果读完觉得有收获的话,欢迎点赞、关注、加公众号【牛觅技术】,查阅更多精彩历史!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值