Spring 消息

同步通信
在之前的博客中提到的远程方法调用RMI中使用的,RMI,Hessian,Burlap,Http invoker和web service在应用程序之间的通信都是同步的,客户端应用程序直接与远程服务交互,并且一直等到远程过程完成才继续执行。

异步消息
借助Spring,我们有多个异步消息的可选方案。分别为JMS java消息服务和AMQP高级消息队列协议。

异步消息的类型:

  1. 点对点消息模型
    在点对点模型中,每一条消息都有一个发送者一个接收者。当消息代理得到消息时,它将消息放入一个队列中。当接收者请求队列中的吓一跳消息时,消息会从队列中取出,并投递给接收者。因为消息投递后会从队列中删除,这样就可以保证消息只能投递给一个接收者。
    实际应用中可能存在的接收者并不止一个,事实上,通常可以使用几个接收者来处理队列中的消息,不过,每个接收者只会处理自己接收到的消息。

  2. 发布—-订阅消息模型
    在发布—订阅消息模型中,消息会发送一个主题。与队列类似,多个接收者都可以监听这个主题。但是,与队列不同的是,消息不再是只投递给一个投递者,而是主题的所有订阅都会收到这个主题的副本(此消息主题还存在,只是拷贝了副本)。

异步消息的优点

  1. 虽然同步RMI通信比较容易理解,建立起来也很简单。但是采用同步消息的服务的客户端存在几个限制,限制如下:
    1.同步通信意味着等待。当客户端调用远程服务的方法时,他必须等待远程方法结束后才能继续执行。如果客户端与远程服务端频繁通信,或者远程服务响应很慢,就会对客户端应用性能带来负面影响。
    2.客户端通过远程服务接口与远程接口耦合。如果此接口发生变化,此服务所有客户端都要做出相应的改变。
    3.客户端与远程服务位置耦合。
  2. 异步通信优点—–无需等待
    当使用jms发送消息时,客户端不必等待消息被处理。客户端只需将消息发送给消息代理,就假定消息会被投递到目的地。
    因为不需要等待所以客户端可以继续执行其他任务。这种方式可以有效节省时间,所以客户端性能能够大大提高。
  3. 异步通信优点—–面向消息的解耦
    与面向方法调用的RPC通信不同,发送异步消息是以数据为中心。这意味着客户端并没有与特定的方法签名绑定。任何可以处理数据的队列或订阅者都可以处理客户端发来的消息。
    4.异步通信优点—–位置独立
    同步RPC服务通常需要网络地址来定位。这就意味着客户端无法灵活适应网络。如果服务ip或者服务端口号改变了,客户端就需要做相应的改变。
  4. 异步通信优点—–确保投递
    为了使客户端可以与同步服务通信,服务必须指定ip和端口。如果服务崩溃了,客户端将不能继续处理。
    但是,当发送异步消息时,客户端完全相信消息会被投递。即使在消息发送时,服务无法使用,消息也会被储存起来,指导服务重新可以使用。

    前面的博客中已经看到了RPC远程方法调用的几种方式(RMI Hessian Burlap Http invoker),下面将看看spring消息的两种方式,JMS (java 消息服务),AMQP(高级消息队列协议)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值