JMS基础

一、JMS基础(1)

1.  消息中间件将信息以消息的形式,从一个应用程序传送到另一个或多个应用程序。

  主要特点:

      (1) 消息异步接收消息发送者不需要等待消息接收者的响应

      (2) 消息可靠接收确保消息在中间件可靠保存,只有接收方收到后才能删除消息,多个消息可以组成原子事务。有时,也要求消息不能重复传输。

2.  为什么会出现消息中间件?

      各个系统同步发送接收数据,相互等待,造成系统瓶颈。

 

JMS使用场景:
  第一想到的就是异步处理其实,还可以用JMS来解决很多复杂的问题, 例如分布并发系统解耦负载均衡热部署触发器, 这些复杂的问题因为引入了JMS而变的更加简单.

   (1) 同步通信:  客户发出调用后,必须等待服务对象完成处理并返回结果后才能够继续执行。

                    如果数据交互过程, 允许异步操作时, 可以考虑使用JMS

                    比如: 用JMS来异步发送邮件. 数据的生产者交付数据后,即可立即返回而无需等待数据的执行结果,对于数据消费者可以在合适的时机接收数据并执行. 这一点可能是我们使用JMS的主要原因.

  (2) JMS解决分布问题的场景, 解决分布有两种类型:

       第一种: 消息是集中的, 但消息的处理是分布的. 

                   例如: 系统可能会被分为前台与后台,这两个系统是部署在不同的网段里的那么怎么把前台发生的业务通知后台系统呢? 前台系统在处理完业务请求后的同时发送一个消息到queue后台系统的消息接收者接收到消息后立即处理这里消息的处理也可能有一定的延期但这主要取决于消息服务器的硬件能力网络带宽消息接收者的处理速度等

       第二种: 消息是分布的, 消息中间件提供了消息路由的功能。 

           即: 消息发送到一个消息服务器后, 这个消息服务器根据定义的规则再把这条消息路由转发到其它的消息服务器。例如, 可能在北京的一个数据中心部署了数据采集系统, 采集到数据后以消息的方式发送到消息服务器, 然后消息服务器再把这条消息路由到上海的数据中心, 再由上海数据中心部署的数据处理系统来处理这条消息.
  

  (3) 如果数据交互的双端执行效率不对等时,可以考虑使用JMS

      主要场景为: 数据生产的速度非常高(比如队列),但是数据消费的速度相对较低,如果没有良好的架构设计,必将对数据生产者造成阻塞或者数据积压,从而对整体的性能带来挑战或者数据安全带来风险; JMS就是一个很好的"数据缓冲"中心,它将密集的数据提交操作以"均匀"的速度交付给数据消费者, 从而实现系统整体的稳定性.  

         这种策略, 在日志统计/小数据分析系统中,经常使用. 主要作用为"缓解系统瓶颈,提高生产效率".

 

  归纳为: "异步调用、分布、应用解耦"


二、JMS基础(2)

1.  JMS基本概念

  JMS(Java Message Service) ,Java消息服务JMSSUN提出的旨在统一各种消息中间件(MOM)系统接口的规范。它提供标准的产生、发送、接收消息的接口, 简化企业应用的开发。

                    它支持两种消息通信模型:点到点(point-to-point)(P2P)模型和发布/订阅(Pub/Sub)模型。 

  点到点模型(P2P):消息生产者产生一个消息后,把这个消息发送到一个Queue(队列)中,然后消息接收者再从这个Queue中读取,一旦这个消息被一个接收者读取之后,它就在这个Queue中消失了

              P2P模型规定一个消息只能有一个接收者, 即: 一个消息只能被一个接收者消费。

  发布/订阅模型(Pub/Sub):消息生产者产生一个消息后,把这个消息发送到一个Topic中,这个Topic可以同时有多个接收者在监听,

                当一个消息到达这个Topic之后,所有消息接收者都会收到这个消息。Pub/Sub 模型允许一个消息可以有多个接收者

  总结简单的讲,点到点模型和发布/订阅模型的区别就是前者是一对一,后者是一对多

 

2. JMS定义了2种模型

  (1) P2P: point-to-point,  点对点消息传输模型

  (2) Pub/sub: publish-subscribe, 发布订阅模型

    P2P如下图所示:

        

     如图可以看出一个或多个生产者发送消息消息m2先抵达queue, 消息m1后抵达queue, 它们一同存在于一个先进先出的queue里面消费者也存在一个或多个queue里面的消息进行消费。但消息被随机的一个消费者消费,且仅消费一次。

  点对点消息传递域的特点

  (1) 每个消息只能有一个消费者

  (2) 消息的生产者和消费者之间没有时间上的相关性。

        无论消费者在生产者发送消息的时候是否处于运行状态,它都可以提取消息。

  

  在pub/sub消息模型中消息被广播给所有的订阅者:

      

 

  特点: 每个消息可以有多个消费者。


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值