发送端配置文件: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&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>