JMS与Spring(转)

一、JMS的关键词

1、   跨服务器:专业术语好像叫“跨实例”。意思是,可以在多个服务器(可以是不同的服务器,如 resin 与 tomcat )之间相互通信。与之对应的是单服务器版。

2、   消息生产者:就是专门制造消息的类。

3、   消息消费者:也叫消息接收者,它主要是实现了消息监听的一个接口,当然,也可以难过 Spring 提供的一个转换器接口指定任意一个类中的任意方法。

 

二、认识JMS

JMS 模块的功能只提供了接口,并没有给予实现,实现 JMS 接口的消息中间件叫 JMS Provider ,这样的消息中间件可以从 Java 里通过 JMS 接口进行调用。

JMS 消息由两部分构成: header 和 body 。 header 包含消息的识别信息和路由信息, body 包含消息的实际数据。

JMS 的通用接口集合以异步方式发送或接收消息 。另外, JMS 采用一种宽松结合方式整合企业系统的方法,其主要的目的就是创建能够使用跨平台数据信息的、可移植的企业级应用程序,而把开发人力解放出来。

Java 消息服务支持两种消息模型: Point-to-Point 消息 ( 即 P2P) 和发布订阅消息( Publish Subscribe messaging ,简称 Pub/Sub ,也就是广播模式)。

根据数据格式, JMS 消息可分为以下五种:

BytesMessage   消息是字节流。

MapMessage   消息是一系列的命名和值的对应组合。

ObjectMessage   消息是一个流化 ( 即继承 Serializable) 的 Java 对象。

StreamMessage   消息是 Java 中的输入输出流。

TextMessage   消息是一个字符串,这种类型将会广泛用于 XML 格式的数据。

 

三、使用JMS

1 、建立消息连接(也就是建立连接工厂);

2 、设定消息目的地 ( 其实与步骤 1 中用的类是一样的,只是它是用来指定目的地,而步骤 1 中是用来指定消息服务器地址的 ) ;

3 、创建 jmsTemplate 实例(为下一步构建消息 sessin 作准备);

4 、创建消息生产者(其中就用到了 2 、 3 两步的产物),它就是一个普通的类,一般是通过 send 方法发送消息,也可以通过 MessageListenerAdapter 指定发送信息的方法;

5 、创建 MDP (也就是消息接收者,它是一个必须实现 MessageListener 接口的类);

6 、为每个 MDP 建立一个监听容器,当有相应的消息传来,则它会自动调用对应的 MDP 消费消息。

整个过程就像编写 JDBC 一样,代码维护量很大。为此,让 Spring 对其进行管理是个不错的选择。

 

四、JMS与Spring

1. 提供 JMS 抽象 API ,简化了访问目标(队列或主题)和向指定目标发布消息时 JMS 的使用。

2. 开发人员不需要关心 JMS 不同版本(例如 JMS 1.0.2 与 JMS 1.1 )之间的差异。

3. 开发人员不必专门处理 JMS 异常,因为 Spring 为所有 JMS 异常提供了一个未经检查的异常,并在 JMS 代码中重新抛出

 

五、为什么使用JMS

  • 它可以把不影响用户执行结果又比较耗时的任务(比如发邮件通知管理员)异步 的扔给JMS 服务端去做,而尽快的把屏幕返还给用户。
  • 服务端能够多线程排队响应高并发的请求,并保证请求不丢失。
  • 可以在Java世界里达到最高的解耦。客户端与服务端无需直连,甚至无需知晓对方是谁、在哪里、有多少人,只要对流过的信息作响应就行了,在企业应用环境复杂时作用明显。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值