activemq in action

activemq in action

ID:14725591

大小:552.71 KB

页数:45页

时间:2018-07-30

activemq in action_第1页
activemq in action_第2页
activemq in action_第3页
activemq in action_第4页
activemq in action_第5页
资源描述:

《activemq in action》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、1JMS在介绍ActiveMQ之前,首先简要介绍一下JMS规范。1.1JMS的基本构件1.1.1连接工厂连接工厂是客户用来创建连接的对象,例如ActiveMQ提供的ActiveMQConnectionFactory。1.1.2连接JMSConnection封装了客户与JMS提供者之间的一个虚拟的连接。1.1.3会话JMSSession是生产和消费消息的一个单线程上下文。会话用于创建消息生产者(producer)、消息消费者(consumer)和消息(message)等。会话提供了一个事务性的上下文,在这个上下

2、文中,一组发送和接收被组合到了一个原子操作中。1.1.4目的地目的地是客户用来指定它生产的消息的目标和它消费的消息的来源的对象。JMS1.0.2规范中定义了两种消息传递域:点对点(PTP)消息传递域和发布/订阅消息传递域。点对点消息传递域的特点如下:•每个消息只能有一个消费者。•消息的生产者和消费者之间没有时间上的相关性。无论消费者在生产者发送消息的时候是否处于运行状态,它都可以提取消息。发布/订阅消息传递域的特点如下:•每个消息可以有多个消费者。•生产者和消费者之间有时间上的相关性。订阅一个主题的消费者只能

3、消费自它订阅之后发布的消息。JMS规范允许客户创建持久订阅,这在一定程度上放松了时间上的相关性要求。持久订阅允许消费者消费它在未处于激活状态时发送的消息。在点对点消息传递域中,目的地被成为队列(queue);在发布/订阅消息传递域中,目的地被成为主题(topic)。1.1.5消息生产者消息生产者是由会话创建的一个对象,用于把消息发送到一个目的地。1.1.6消息消费者消息消费者是由会话创建的一个对象,它用于接收发送到目的地的消息。消息的消费可以采用以下两种方法之一:•同步消费。通过调用消费者的receive方法

4、从目的地中显式提取消息。receive方法可以一直阻塞到消息到达。•异步消费。客户可以为消费者注册一个消息监听器,以定义在消息到达时所采取的动作。1.1.7消息JMS消息由以下三部分组成:•消息头。每个消息头字段都有相应的getter和setter方法。•消息属性。如果需要除消息头字段以外的值,那么可以使用消息属性。•消息体。JMS定义的消息类型有TextMessage、MapMessage、BytesMessage、StreamMessage和ObjectMessage。1.2JMS的可靠性机制1.2.1确

5、认JMS消息只有在被确认之后,才认为已经被成功地消费了。消息的成功消费通常包含三个阶段:客户接收消息、客户处理消息和消息被确认。在事务性会话中,当一个事务被提交的时候,确认自动发生。在非事务性会话中,消息何时被确认取决于创建会话时的应答模式(acknowledgementmode)。该参数有以下三个可选值:•Session.AUTO_ACKNOWLEDGE。当客户成功的从receive方法返回的时候,或者从MessageListener.onMessage方法成功返回的时候,会话自动确认客户收到的消息。•Se

6、ssion.CLIENT_ACKNOWLEDGE。客户通过消息的acknowledge方法确认消息。需要注意的是,在这种模式中,确认是在会话层上进行:确认一个被消费的消息将自动确认所有已被会话消费的消息。例如,如果一个消息消费者消费了10个消息,然后确认第5个消息,那么所有10个消息都被确认。•Session.DUPS_ACKNOWLEDGE。该选择只是会话迟钝第确认消息的提交。如果JMSprovider失败,那么可能会导致一些重复的消息。如果是重复的消息,那么JMSprovider必须把消息头的JMSRed

7、elivered字段设置为true。1.2.2持久性JMS支持以下两种消息提交模式:•PERSISTENT。指示JMSprovider持久保存消息,以保证消息不会因为JMSprovider的失败而丢失。•NON_PERSISTENT。不要求JMSprovider持久保存消息。1.2.3优先级可以使用消息优先级来指示JMSprovider首先提交紧急的消息。优先级分10个级别,从0(最低)到9(最高)。如果不指定优先级,默认级别是4。需要注意的是,JMSprovider并不一定保证按照优先级的顺序提交消息。1.

8、2.4消息过期可以设置消息在一定时间后过期,默认是永不过期。1.2.5临时目的地可以通过会话上的createTemporaryQueue方法和createTemporaryTopic方法来创建临时目的地。它们的存在时间只限于创建它们的连接所保持的时间。只有创建该临时目的地的连接上的消息消费者才能够从临时目的地中提取消息。1.2.6持久订阅首先消息生产者必须使用PERSISTENT提交消息。客户可以通

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。