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>
public class UserRegisterListener {public void onRegister(VivaUserRegisterMessage registerMessage){System.out.println("User Register,tel="+ registerMessage.getTel()+ ",time="+registerMessage.getRegisterTime());}}
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);}}