JMS概述

JMS即Java消息服务(Java Message Service)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。

 

JMS的通用接口集合以异步方式发送或接收消息。

 

1、JMS由以下元素组成 
     JMS提供者:连接面向消息中间件的,JMS接口的一个实现。提供者可以是Java平台的JMS实现,也可以是非Java平台的面向消息中间件的适配器。   
     JMS客户:生产或消费消息的基于Java的应用程序或对象。   
     JMS生产者:创建并发送消息的JMS客户。   
     JMS消费者:接收消息的JMS客户。   
     JMS消息:包括可以在JMS客户之间传递的数据的对象   
     JMS队列:一个容纳那些被发送的等待阅读的消息的区域。队列暗示,这些消息将按照顺序发送。一旦一个消息被阅读,该消息将被从队列中移走。   
     JMS主题:一种支持发送消息给多个订阅者的机制。

 

2、JMS模型
     点对点或队列模型:如果应用程序开发者希望每一条消息都能够被处理,那么应该使用P2P消息模型。
     发布者/订阅者模型:如果一定程度的消息传递的不可靠性可以被接受的话,那么应用程序开发者也可以使用Pub/Sub消息模型。

 

3、消息传递方式
     NON_PERSISTENT:消息最多投递一次,此方式为默认方式。 —— JMS提供者服务重启后消息会丢失
     PERSISTENT:消息将使用暂存后再转送的机理投递。  —— JMS提供者服务重启后消息不会丢失

 

4、消息正文格式
     StreamMessage:Java原始值的数据流
     MapMessage:一套名称-值对   
     TextMessage:一个字符串对象   
     ObjectMessage:一个序列化的 Java对象   
     BytesMessage:一个未解释字节的数据流

 

5、JMS应用程序接口
     ConnectionFactory 接口(连接工厂):用户用来创建到JMS提供者的连接的被管对象。
     Connection 接口(连接):连接代表了应用程序和消息服务器之间的通信链路。
     Destination 接口(目标):目标是一个包装了消息目标标识符的被管对象,消息目标是指消息发布和接收的地点,或者是队列,或者是主题。


     MessageConsumer 接口(消息消费者):由会话创建的对象,用于接收发送到目标的消息。

          消息消费者接收消息的方式有两种:

               1)同步方式:consumer.receive() 或 consumer.receive(int timeout):消息的接收者会一直等待下去,直到有消息到达,或者超时。

               2)异步方式:注册一个MessageListener:注册一个监听器,当有消息到达的时候,会回调它的onMessage()方法。


     MessageProducer 接口(消息生产者):由会话创建的对象,用于发送消息到目标。
     Message 接口(消息):是在消费者和生产者之间传送的对象。
          一个消息有三个主要部分:
               消息头(必须):包含用于识别和为消息寻找路由的操作设置。
               一组消息属性(可选):包含额外的属性,支持其他提供者和用户的兼容。可以创建定制的字段和过滤器(消息选择器)。
               一个消息体(可选):允许用户创建五种类型的消息(文本消息,映射消息,字节消息,流消息和对象消息)。
     Session 接口(会话):表示一个单线程的上下文,用于发送和接收消息。
          如果session被标记为transactional,当一个事务被提交时,确认自动发生。

          如果session没有标记为transactional,有三个用于消息确认的选项:
            AUTO_ACKNOWLEDGE:session将自动地确认收到一则消息。
                CLIENT_ACKNOWLEDGE:客户通过消息的acknowledge方法确认消息。需要注意的是,在这种模式中,确认是在会话层上进行:确认一个被消费的消息将自动确认所有已被会话消 费的消息。例如,如果一个消息消费者消费了10个消息,然后确认第5个消息,那么所有10个消息都被确认。    
                DUPS_OK_ACKNOWLEDGE:该选择只是会话迟钝的确认消息的提交。如果JMS provider失败,那么可能会导致一些重复的消息。如果是重复的消息,那么JMS provider必须把消息头的JMSRedelivered字段设置为true。 

 

6、JMS提供者实现:
      Apache ActiveMQ
      BEA的BEA WebLogic Server JMS
      IBM的WebSphere MQ

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值