读书人

利用webservice跟jms实现系统间的数据

发布时间: 2012-09-06 10:37:01 作者: rapoo

利用webservice和jms实现系统间的数据同步之三

jmsclient系统的结构图如下:


利用webservice跟jms实现系统间的数据同步之三


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.xsdhttp://www.springframework.org/schema/contexthttp://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.ActiveMQInitialContextFactoryjava.naming.provider.url = tcp://10.78.69.50:61616java.naming.security.principal = systemjava.naming.security.credentials = managerconnectionFactoryNames = QueueCFqueue.queue1=jms.queue1queue.queue2=jms.queue2


至于如何利用spring jms的api发送和接收消息,在此不详细讲解,大家可以参考其他资料,如:《Java消息服务》一书。

读书人网 >Web前端

热点推荐