首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 服务器 > Apache >

JMS Apache ActiveMQ应用(3)

2012-11-16 
JMS Apache ActiveMQ使用(3)还有工作就是如何接受JMS Message并进行处理了,spring中也有现成的框架进行处

JMS Apache ActiveMQ使用(3)
还有工作就是如何接受JMS Message并进行处理了,spring中也有现成的框架进行处理MessageListenerAdapter和DefaultMessageListenerContainer,我们只要写一个普通类编写处理消息的逻辑,具体如何接收消息都由Spring完成。
spring-listener-jms.xml

<?xml version="1.0" encoding="GBK"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN""http://www.springframework.org/dtd/spring-beans-2.0.dtd"><beans><import resource="spring-jms.xml"/><bean id="messageListener" value="onRegister"/><property name="messageConverter" ref="messageConvert"/></bean><bean id="queueListenerContainer" ref="jmsFactory"/><property name="destination" ref="queueDestination"/><property name="messageListener" ref="messageListener"/></bean><bean id="topicListenerContainer" ref="jmsFactory"/><property name="destination" ref="topicDestination"/><property name="messageListener" ref="messageListener"/></bean></beans>

从配置文件可以看出配置了一个Topic监听器和Queue监听器,实际的监听类就是一个UserRegisterListener,由它处理用户注册事件。
UserRegisterListener.java代码
public class UserRegisterListener {public void onRegister(VivaUserRegisterMessage registerMessage){System.out.println("User Register,tel="+ registerMessage.getTel()+ ",time="+registerMessage.getRegisterTime());}}

最后写一个JUnit测试用户来测试一下代码
JMSTestor.java
public class JMSTestor extends TestCase {private ApplicationContext context;public void testQueueSend(){context = new ClassPathXmlApplicationContext("spring-jms.xml");JmsTemplate jmsTemplate = (JmsTemplate) context.getBean("queueTemplate");VivaUserRegisterMessage msg = new VivaUserRegisterMessage();msg.setRegisterTime(new Date());msg.setTel("1385199XXXX");msg.setUserId(1);jmsTemplate.convertAndSend(msg);}public void testTopicSend(){context = new ClassPathXmlApplicationContext("spring-jms.xml");JmsTemplate jmsTemplate = (JmsTemplate) context.getBean("topicTemplate");VivaUserRegisterMessage msg = new VivaUserRegisterMessage();msg.setRegisterTime(new Date());msg.setTel("1385199XXXX");msg.setUserId(1);jmsTemplate.convertAndSend(msg);}public void testListener()throws Exception{context = new ClassPathXmlApplicationContext("spring-listener-jms.xml");Thread.sleep(1000*60*30);}}

执行testTopicSend发送JMS Message到Topic
执行testQueueSend发送JMS Message到Queue
执行testListener启动Topic和Queue监听器处理JMS Message
完成!另外ActiveMQ集成了Jetty服务,可以访问地址http://localhost:8161/admin/查看具体信息

热点排行