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
