但是如果你父母在家,你在外地,那要聊个天什么的,吼两句就没办法了。这时候就是要借助电话或者互联网这类工具了。这类工具会把你的消息传达给你的父母,再把你父母的消息传递给你。
而JMS就是这么一个功能。负责多方的消息传输。
一般做分布式,都是把多层应用放到多个服务器上去。比如说,前台服务器接受到用户请求。会先去缓存服务器查一下该页面有没有缓存。那这个时候就要跟缓存服务器通信。发出查询是否有缓存的请求。那你就要建一个这样的服务,让前台可查询。查询后,缓存服务器又要响应结果。
如果没有缓存的话,那这个时候又要与业务层打交道,业务层再与数据层请求。这层与层之间,或者服务器与服务器间通讯,都需要有一套的通讯框架。JSM就是做这个了。
JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。可以简单的理解为:两个应用程序之间需要进行通信,我们使用一个JMS服务,进行中间的转发,通过JMS 的使用,我们可以解除两个程序之间的耦合。
点对点模型用于消息生产者和消息消费者之间点到点的通信。消息生产者将消息发送到由某个特定名字标示的消息队列(Queue)中,消息消费者从这个特定队列中获取对应消息。在消息传送给消费者之前它被存储在这个队列中。队列可以是持久的,以保证在消息服务出现故障时仍然能够传递消息。
在点对点消息传送模型中,应用程序由消息队列(Queue),发送者(Sender),接收者(Receiver)组成。每一个消息发送给一个特殊的消息队列,该队列保存了所有发送给它的消息(除了被接收者消费掉的和过期的消息)。
在发布/订阅消息模型中,发布者发布一个消息,该消息通过主题(Topic)传递给所有的客户端。在这种模型中,发布者和订阅者彼此不知道对方,是匿名的且可以动态发布和订阅主题(Topic)。主题(Topic)主要用于保存和传递消息,且会一直保存消息直到消息被传递给客户端。
在发布与订阅消息传送模型中,应用程序由主题(Topic),发布者(Publisher),订阅者(Subscriber)组成。客户端将消息发送到主题。多个发布者将消息发送到Topic,系统将这些消息传递给多个订阅者。
在JMS中,消息的产生和消息是异步的。对于消费来说,JMS的消息者可以通过两种方式来消费消息。
JMS API是在javax.jms包中定义的。
要使用JMS API 需要创建一个提供连接对象的连接工厂。连接对象提供与消息服务器的链接。链接被用来创建会话,会话被用来创建消息,消息通过消息的生产者发送到目标(队列或主题),然后消息传递到消息消费者。
整理文章主要为了自己日后复习用,文章中可能会引用到别的博主的文章,如涉及到博主的版权问题,请博主联系我。
这个很难具体说。我感觉jms用在异构平台间通讯,或者大规模系统间通讯都很合适。数据库在这方面很难提供实时性和好的效率。另外消息是可以持久化的。
具体内容你还是查查相关资料吧,开始的时候可以用ActiveMQ试试,这是java实现的jms服务器。开源的。
像我们现在的项目核心数据交换就是jms,用的是TIBCO的EMS。
MS当然可以用在一台机器或者同一个系统,作为异步应用之间的通讯用。
比如A、B两个应用都在一台服务器上。A应用去调用B应用,如果B应用处理极慢,不采用异步手段,那么A一直等待B的响应,A也就卡死了。
如果之间采用JMS通讯传输指令,那A只管把命令丢到JMS队列,A立刻可以处理新的事务了。
B收到JMS的消息去执行,啥时候做完了再把反馈信息通过JMS丢回给A就行了。A也就知道原先给B的事务已经做完了。这就达成了应用的异步调用。
jMS一般用在企业级、分布式开发中。现在中国流行SSH基本上用不上,只有个别根据业务需要,会有用的,但不多。
最常见的连锁店,店铺销售数据要传回服务器,不能保证所有店铺都能正常联网,也不能断网这个店铺就不能销售。jms的异步传输,可以暂存数据,在网络正常时将之前的数据传输过去。
网络不好的时候,同步传输则要一直等待,异步则不需要。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)