JMS Apache ActiveMQ使用(3)

 
还有工作就是如何接受JMS Message并进行处理了,spring中也有现成的框架进行处理MessageListenerAdapter和DefaultMessageListenerContainer,我们只要写一个普通类编写处理消息的逻辑,具体如何接收消息都由Spring完成。
spring-listener-jms.xml
Xml代码
  1. <?xml version="1.0" encoding="GBK"?>  
  2. <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"   
  3.         "http://www.springframework.org/dtd/spring-beans-2.0.dtd">  
  4. <beans>  
  5.     <import resource="spring-jms.xml"/>  
  6.   
  7.     <bean id="messageListener" class="org.springframework.jms.listener.adapter.MessageListenerAdapter">  
  8.         <constructor-arg>  
  9.             <bean class="com.viva.server.message.jms.UserRegisterListener"/>  
  10.         </constructor-arg>  
  11.         <property name="defaultListenerMethod" value="onRegister"/>  
  12.         <property name="messageConverter" ref="messageConvert"/>  
  13.     </bean>  
  14.   
  15.     <bean id="queueListenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">  
  16.         <property name="connectionFactory" ref="jmsFactory"/>  
  17.         <property name="destination" ref="queueDestination"/>  
  18.         <property name="messageListener" ref="messageListener"/>  
  19.     </bean>  
  20.   
  21.     <bean id="topicListenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">  
  22.         <property name="connectionFactory" ref="jmsFactory"/>  
  23.         <property name="destination" ref="topicDestination"/>  
  24.         <property name="messageListener" ref="messageListener"/>  
  25.     </bean>  
  26.   
  27. </beans>  

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

最后写一个JUnit测试用户来测试一下代码
JMSTestor.java
Java代码 复制代码  收藏代码
  1. public class JMSTestor extends TestCase {   
  2.     private ApplicationContext context;   
  3.   
  4.     public void testQueueSend(){   
  5.         context = new ClassPathXmlApplicationContext("spring-jms.xml");   
  6.         JmsTemplate jmsTemplate = (JmsTemplate) context.getBean("queueTemplate");   
  7.         VivaUserRegisterMessage msg = new VivaUserRegisterMessage();   
  8.         msg.setRegisterTime(new Date());   
  9.         msg.setTel("1385199XXXX");   
  10.         msg.setUserId(1);   
  11.         jmsTemplate.convertAndSend(msg);   
  12.     }   
  13.   
  14.     public void testTopicSend(){   
  15.         context = new ClassPathXmlApplicationContext("spring-jms.xml");   
  16.         JmsTemplate jmsTemplate = (JmsTemplate) context.getBean("topicTemplate");   
  17.         VivaUserRegisterMessage msg = new VivaUserRegisterMessage();   
  18.         msg.setRegisterTime(new Date());   
  19.         msg.setTel("1385199XXXX");   
  20.         msg.setUserId(1);   
  21.         jmsTemplate.convertAndSend(msg);   
  22.     }   
  23.   
  24.     public void testListener()throws Exception{   
  25.         context = new ClassPathXmlApplicationContext("spring-listener-jms.xml");   
  26.         Thread.sleep(1000*60*30);   
  27.     }   
  28.   
  29.        
  30. }  
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/查看具体信息
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值