jmsclient系统的结构图如下: spring配置文件如下: ?xml version="1.0" encoding="UTF-8"?beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xmlns:xsi="http://www
jmsclient系统的结构图如下:
spring配置文件如下:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:component-scan base-package="com.test"/> <bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate"> <property name="environment"> <props> <prop key="java.naming.factory.initial"> org.apache.activemq.jndi.ActiveMQInitialContextFactory </prop> <prop key="java.naming.provider.url">tcp://10.78.69.50:61616</prop> <prop key="java.naming.security.principal">system</prop> <prop key="java.naming.security.credentials">manager</prop> </props> </property> </bean> <!-- jndi连接工厂 --> <bean id="jndiConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiTemplate" ref="jndiTemplate"/> <property name="jndiName" value="QueueCF"/> </bean> <!-- jms session缓存 --> <bean id="queueConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory"> <property name="targetConnectionFactory" ref="jndiConnectionFactory"/> <property name="sessionCacheSize" value="10"/> </bean> <bean id="destinationResolver" class="org.springframework.jms.support.destination.JndiDestinationResolver"> <property name="jndiTemplate" ref="jndiTemplate"/> <property name="cache" value="true"/> <property name="fallbackToDynamicDestination" value="false"/> </bean> <!-- webservice同步数据jms消息监听器 --> <bean id="dataListener" class="org.springframework.jms.listener.adapter.MessageListenerAdapter"> <constructor-arg> <bean class="com.test.DataListener" /> </constructor-arg> </bean> <bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="connectionFactory" ref="queueConnectionFactory"/> <property name="destinationResolver" ref="destinationResolver"/> <property name="concurrentConsumers" value="3"/> <property name="destinationName" value="queue1"/> <property name="messageListener" ref="dataListener"/> <property name="sessionTransacted" value="true" /> </bean> <!-- restfulweb同步数据jms消息监听器 --> <bean id="restfulDataListener" class="com.test.RestfulDataListener"/> <bean id="restfulJmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="connectionFactory" ref="queueConnectionFactory"/> <property name="destinationResolver" ref="destinationResolver"/> <property name="concurrentConsumers" value="3"/> <property name="destinationName" value="queue2"/> <property name="messageListener" ref="restfulDataListener"/> </bean> </beans>
DataListener内容如下:
package com.test; import com.test.model.User; public class DataListener { public void handleMessage(User message) { System.out.println("DataListener : " + message); } public void handleMessage(Object message) { System.out.println("DataListener : " + message); } public void handleMessage(String message) { System.out.println(message); } }
RestfulDataListener的内容如下:
package com.test; import javax.jms.JMSException; import javax.jms.Session; import javax.jms.TextMessage; import org.springframework.jms.listener.SessionAwareMessageListener; public class RestfulDataListener implements SessionAwareMessageListener<TextMessage> { public void onMessage(TextMessage message, Session session) throws JMSException { System.out.println("Receive Restful Message : " + message.getText()); } }
jndi.properties内容如下:
java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory java.naming.provider.url = tcp://10.78.69.50:61616 java.naming.security.principal = system java.naming.security.credentials = manager connectionFactoryNames = QueueCF queue.queue1=jms.queue1 queue.queue2=jms.queue2