spring3.x + activemq学习笔记(一)

来源:互联网 发布:linux 进程 流量 编辑:程序博客网 时间:2024/05/22 07:45

一、activemq的安装

        首先去http://activemq.apache.org/download.html 下载最新版本5.9.0release, 解压apache-activemq-5.9-incubator.zip(或者apache-activemq-5.9-incubator.tar.gz)目录如下:

        +bin (windows下面的bat和unix/linux下面的sh)

        +conf (activeMQ配置目录,包含最基本的activeMQ配置文件)

+data (默认是空的)
+docs (index,replease版本里面没有文档,-.-b不知道为啥不带)
+example (几个例子
+lib (activemMQ使用到的lib)
-apache-activemq-4.1-incubator.jar (ActiveMQ的binary)
-LICENSE.txt
-NOTICE.txt
-README.txt
-user-guide.html
你可以使用bin\activemq.bat(activemq) 启动,然后你可以在浏览器中访问http://localhost:8161/,访问成功会activemq页面,证明安装成功。
二、导入所需jar包
     在下载解压过的activemq的lib文件加下将以下jar包导入项目:


   然后,导入spring所需的jar包,这里导入的是项目中经常使用的jar包(不单是activemq):


三、做spring的相关配置
       因为我是在struts2+hibernet+spring 的ssh框架中做的相关配置,所以只需要配置新建一个文件,文件名字可以自己定义这里用的是 spring-jms.xml,配置文件内容如下:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop"xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd"default-lazy-init="true"><bean id="jmsFactory" class="org.apache.activemq.pool.PooledConnectionFactory"destroy-method="stop"><property name="connectionFactory"><bean class="org.apache.activemq.ActiveMQConnectionFactory"><!-- 安装activemq 所在主机ip,端口61616是activemq默认端口--><property name="brokerURL"><value>tcp://192.168.0.58:61616</value></property><!-- username和password默认都是admin --><property name="userName"><value>admin</value></property><property name="password"><value>admin</value></property></bean></property><!-- session总数 --><property name="maxConnections" value="100"></property></bean><!-- Spring JMS Template --><bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"><property name="connectionFactory"><ref local="jmsFactory" /></property><property name="defaultDestinationName" value="subject" /><!--区别它采用的模式为false是p2p为true是订阅 --><property name="pubSubDomain" value="false" /><!-- deliveryMode, priority, timeToLive 的开关,要生效,必须配置为true,默认false --><property name="explicitQosEnabled" value="true" /><!-- 发送模式 DeliveryMode.NON_PERSISTENT=1:非持久 ; DeliveryMode.PERSISTENT=2:持久 --><property name="deliveryMode" value="2" /></bean><!--设置接收服务资源消息队列的名字,value 中的值就是消息队列的名字 --><bean id="mainsite" class="org.apache.activemq.command.ActiveMQQueue"><constructor-arg index="0" value="test" /></bean><bean id="jmsContainer"class="org.springframework.jms.listener.SimpleMessageListenerContainer"><property name="connectionFactory" ref="jmsFactory" /><property name="destination" ref="mainsite" /><property name="messageListener" ref="jmsListener" /></bean><!-- defaultListenerMethod 的value值是id=jmsReceiver的bean中class的接收消息的方法名 --><bean id="jmsListener"class="org.springframework.jms.listener.adapter.MessageListenerAdapter"><property name="delegate" ref="jmsReceiver" /><property name="defaultListenerMethod" value="test" /></bean><!--接收消息的类  --><bean id="jmsReceiver" class="cn.zk.jms.JmsReceiver"></bean></beans>

 四、配置web.xml
把spring-jms.xml添加进去即可
<context-param><param-name>contextConfigLocation</param-name><param-value> /WEB-INF/config/spring.xml, /WEB-INF/config/spring/spring-aop.xml, /WEB-INF/config/spring/spring-jms.xml</param-value></context-param>
五、编写发送和接收的方法
      1、发送接口和实现类代码如下:          
public interface JmsProducer {// 发送一条信息到缺省目的地public void sendTopicText(final String msg);// 发送一条信息到指定的目的地public void sendTopicText(String destinationName, final String msg);}
   
@Repository("jmsProducerImpl")public class JmsProducerImpl implements JmsProducer {private JmsTemplate jmsTemplate;@Resource(name = "jmsTemplate")public void setJmsTemplate(JmsTemplate jmsTemplate) {this.jmsTemplate = jmsTemplate;}@Overridepublic void sendTopicText(final String msg) {jmsTemplate.send(new MessageCreator() {public Message createMessage(Session session) throws JMSException {return session.createTextMessage(msg);}});}//<span style="font-family: arial, 宋体, sans-serif;">destinationName 消息队列的名字 msg消息的内容</span>@Overridepublic void sendTopicText(String destinationName, final String msg) {jmsTemplate.send(destinationName, new MessageCreator() {public Message createMessage(Session session) throws JMSException {return session.createTextMessage(msg);}});}}

2、接收信息的类代码如下:
接收的类和方法的名字一定要和spring-jms.xml中配置的一样,这里只对数据进行了打印,项目中可以对接收到的数据进行处理
public class JmsReceiver {// mq接收数据---服务资源队列消息 public void test(String msg) throws Exception {System.out.println("mqInfo收到消息:"+msg);}}
到此activemq已经配置完毕,只需要在项目中调用发送信息接口,就可以接收到相应的信息,这里我在用户登录成功时发送一条登录成功的消息给activemq,登录代码如下:
private JmsProducer jmsProducer;     public JmsProducer getJmsProducer() {return jmsProducer;}@Resource(name="jmsProducerImpl")public void setJmsProducer(JmsProducer jmsProducer) {this.jmsProducer = jmsProducer;}public String loginTwo() throws Exception {// 判断验证码String rand = (String) this.getSession().getAttribute("rand");if (StringUtils.isBlank(rand)) {msg = "验证码错误!";return INPUT;}if (!rand.equalsIgnoreCase(code)) {// && !"9999".equals(code)) {msg = "验证码错误!";return INPUT;}// 判断用户名密码sysUser = loginService.getUserByNamePwd(username, pwd);if (sysUser != null) {this.saveUser(sysUser);jmsProducer.sendTopicText("test", "用户登录成功");//test 为sping-jms.xml中配置的消息队列名称System.out.println("消息成功发送........");return SUCCESS;} else {msg = "用户名或密码错误!";return INPUT;}}

然后,运行程序登录系统在控制台会看到如下打印信息:


到此这篇文章也就结束了,希望多指正,转载请注明出处。

0 0
原创粉丝点击