前几章我们分别利用spring rmi、httpinvoker、httpclient、webservice技术实现不同服务器间的远程访问。本章我将通过spring jms和activemq实现单Web项目服务器间异步访问和多Web项目服务器间异步访问。
一. 简介
1. 什么是Apache ActiveMq
Apache ActiveMq是最流行和最强大的开源消息和集成服务器。同时Apache ActiveMq是速度快,支持多种跨语言客户端和协议,同时配有易于使用的企业集成模式和优秀的特性,并且支持JMS1.1和J2EE1.4。具体特性见官网:http://activemq.apache.org/
2. 什么是JMS
JMS的全称是Java Message Service,即Java消息服务。它主要用于在生产者和消费者之间进行消息传递,生产者负责产生消息,而消费者负责接收消息。把它应用到实际的业务需求中的话我们可以在特定的时候利用生产者生成一消息,并进行发送,对应的消费者在接收到对应的消息后去完成对应的业务逻辑。
JMS 支持两种消息传递模型:
点对点(point-to-point,简称 PTP)
发布/订阅(publish/subscribe,简称 pub/sub)。
这两种消息传递模型非常相似,但有以下区别:
PTP 消息传递模型规定了一条消息只能传递给一个接收方。 采用javax.jms.Queue表示。Spring配置类型destination-type="queue"。
Pub/sub 消息传递模型允许一条消息传递给多个接收方。采用javax.jms.Topic表示。Spring配置类型destination-type="topic"。
二. 单服务器异步访问
3. Spring 整合JMS和ActiveMq流程
1) 下载和部署ActiveMq服务器
2) Spring jms和activemq相关依赖引入
3) Spring整合activemq配置
4) 定义消息发布者(生产者)
5) 定义消息订阅者(消费者)
6) Spring mvc配置
7) 实例测试
4. Spring整合JMS和ActiveMq具体实现
1) 下载和部署ActiveMq服务器
下载地址:
http://activemq.apache.org/2016/03/07/apache-activemq-5132-released.html
解压下载文件,假如我保存在D盘根目录,找到目录apache-activemq-5.13.2\bin\win64下的activemq.bat,启动activemq服务。
2) Spring jms和activemq相关依赖
<!-- xbean如<amq:connectionFactory /> -->
<dependency>
<groupId>org.apache.xbean</groupId>
<artifactId>xbean-spring</artifactId>
<version>3.16</version>
</dependency>
<!-- Active MQ -->
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version> 5.13.1</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version> 4.2.0.RELEASE</version>
</dependency>
3) Application-context-jms中配置jms和activemq
注意头部信息需要引入jms和activemq
具体配置如下:
<?xml version="1.0"encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xml