论坛首页 Java企业应用论坛

spring结合activemq发送消息

浏览 2429 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-12-09  

发送端配置文件:ApplicationContext.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
	<bean id="mqConnnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
		<property name="brokerURL">
			<value>failover:tcp://127.0.0.1:61616?wireFormat.maxInactivityDuration=0</value>
		</property>
		<property name="userName">
			<value>system</value>
		</property>
		<property name="password">
			<value>system</value>
		</property>
	</bean>
	<bean id="singleConnectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">
		<property name="targetConnectionFactory" ref="mqConnnectionFactory"/>
	</bean>
	
	<bean id="SimpleMessageConverter" class="org.springframework.jms.support.converter.SimpleMessageConverter"/>
	
	<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
    	<property name="connectionFactory" ref="singleConnectionFactory"></property>
    	<property name="messageConverter" ref="SimpleMessageConverter"/>
    	<property name="timeToLive" value="180"/>
    	<property name="explicitQosEnabled" value="true"/>
    	<property name="pubSubDomain" value="true"/>
 	</bean>
 	
 	
</beans>

 

 

PushMain.java

package com.jms.activemq;

import java.util.HashMap;
import java.util.Map;

import org.springframework.beans.factory.ListableBeanFactory;
import org.springframework.beans.factory.generic.GenericBeanFactoryAccessor;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jms.core.JmsTemplate;

public class PushMain {
	public static void main(String[] args) {
		ListableBeanFactory lsb = new ClassPathXmlApplicationContext("classpath:com/jms/activemq/ApplicationContext.xml");
		GenericBeanFactoryAccessor gba = new GenericBeanFactoryAccessor(lsb);
		JmsTemplate jmsTemplate = (JmsTemplate) gba.getBean("jmsTemplate");
		Map<String,String> map = new HashMap<String,String>();
		map.put("fileName","某某文件");
		jmsTemplate.convertAndSend("updatefile", map);
	}
}

 

 

接收端:

一共三个文件

抽象类:AbstractListener.java

package com.jms.activemq;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.Session;

import org.springframework.jms.listener.SessionAwareMessageListener;
import org.springframework.jms.support.converter.MessageConverter;

public abstract class AbstractListener implements MessageListener,SessionAwareMessageListener{
	
	private MessageConverter messageConverter;
	
	public void onMessage(Message message) {
		try {						
			onMessage(message, null);				
		}
		catch (Throwable ex) {
			ex.printStackTrace();
		}
	}
	public abstract void onMessage(Message message, Session session) throws JMSException;
	
	abstract void initCreateFile();
	
	public MessageConverter getMessageConverter() {
		return messageConverter;
	}
	public void setMessageConverter(MessageConverter messageConverter) {
		this.messageConverter = messageConverter;
	}
	
}

 

 

 

 ListenerA.java

 

package com.jms.activemq;

import java.util.Map;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;

public class ListenerA extends AbstractListener {

	@Override
	void initCreateFile() {
		
	}

	@Override
	public void onMessage(Message message, Session session) throws JMSException {
		Map<String,byte[]> map = (Map<String,byte[]>)this.getMessageConverter().fromMessage(message);
		System.out.println("----"+map.get("fileName"));
	}

}

 

 

ListenerB.java

 

package com.jms.activemq;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;

public class ListenerB extends AbstractListener {

	@Override
	void initCreateFile() {		

	}
	
	@Override
	public void onMessage(Message message, Session session) throws JMSException {
		System.out.println("------listenerB");

	}
}

 

ApplicationContext.xml文件

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
	<bean id="mqConnnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
		<property name="brokerURL">
			<value>failover:tcp://127.0.0.1:61616?connectionTimeout=0&amp;wireFormat.maxInactivityDuration=0</value>
		</property>
		
		<property name="userName">
			<value>system</value>
		</property>
		<property name="password">
			<value>system</value>
		</property>
	</bean>
	
	<bean id="singleConnectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">
		<property name="targetConnectionFactory" ref="mqConnnectionFactory"/>
	</bean>
	
	<bean id="SimpleMessageConverter" class="org.springframework.jms.support.converter.SimpleMessageConverter"/>	
		
 	<bean id="ATL" class="com.jms.activemq.AbstractListener" abstract="true">
		<property name="messageConverter" ref="SimpleMessageConverter"/>
	</bean>	
	
	<bean id="ListenerContainerB" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
		  <property name="connectionFactory" ref="singleConnectionFactory"/>
		  <property name="messageListener">
		  	<bean class="com.jms.activemq.ListenerB" parent="ATL"></bean>
		  </property>
		  <property name="pubSubDomain" value="true"/>
		  <property name="destinationName"><value>DeleteFile</value></property>
	</bean>
		
	<bean id="ListenerContainerA" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
		  <property name="connectionFactory" ref="singleConnectionFactory"/>
		  <property name="messageListener">
		  	<bean class="com.jms.activemq.ListenerA" parent="ATL"></bean>
		  </property>
		  <property name="pubSubDomain" value="true"/>
		  <property name="destinationName"><value>updatefile</value></property>
	</bean>
</beans>

 

 

因为是tomcat工程, web.xml配置文件如下

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>jms3</display-name>
  
  <context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/ApplicationContext.xml</param-value>
    </context-param>
    
    <listener>
      	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
  
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

 

   发表时间:2010-12-09  
看右上角,,,有人发过了。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics