关于JMS - Java Message Service

2014-12-15  籽藤 

  • JMS的消息传递跟常用的通信协议有什么区别?

通信协议一般是针对一种具体的通信业务场景,制定了一个规定。是多方都需要遵守的。而jms消息机制,在更加抽象和通用的程度上定义了一个消息传递的规约。适用场景不一样。JMS有自己特定的规范,定义通用的消息格式,和消息传递的模式。

  • JMS和SOAP有什么区别?

JMS的消息格式(头信息,属性,消息体)跟SOAP类似,但是SOAP专注于远程服务调用,JMS专注于信息交换。SOAP是两个点的连接系统,JMS是三个点。生产者产生消息,先发到JMS Server,然后由Server传递给消费者处理。

  • ‘点对点’与‘发布订阅’模式

假设存在多个消费者,如果一条消息代表一个实体对象,或是不可分的数据,只有一个消费者可以获取到消息。这就是Point to Point模式。一条数据不能重复发给两个消费者。

如果消息是一个可以复制的,或者抽象的东西,情况就不同了。每一条消息,都可以被多个人共享。

  • 如何保证消息传递的高效和高可靠性

这就是JMS中的“确认”和“事务”的概念。消费者在接收到信息之后,会发送一个确认给JMS Server,如果JMS Server没有收到确认,就在一定的时间内一直发。

  • 持久订阅的概念

你可以想象成,在线期间,你接收了第1、2、3条数据。然后掉线了,不在线期间,系统里多了第4、5条数据,发送给所有的订阅者后,删除了。 之后你又上线了。。。你想要你上次获取的最后一条数据后的第4、5条数据。这个原理就是同时持久化订阅者和topic的消息。topic因为要发送给多个人,默认是非持久化的。Queue默认是持久化的,系统崩溃也不要紧,重启后从介质中恢复消息。

  • 优化JMS性能的几个方面

    1. 优化存储
    2. 优化确认
    3. 尽量快速的消费掉消息
    4. 尽量异步处理消息
320°/3203 人阅读/0 条评论 发表评论

登录 后发表评论