zoukankan      html  css  js  c++  java
  • Spring 之 JMS 基于JMS的RPC

          使用JMS PTP消息和pub/sub可以将两个应用系统集成在一起,在Spring中还提供了基于JMS的RPC方案。Spring 提供的方案有一个缺点就是只能使用点对点消息。

    导出基于JMS的服务

    JmsInvokerServiceExporter是Spring 提供的基于JMS服务导出的工厂类

     <!--  -->
       <bean id="jmsServiceExporter" class="org.springframework.jms.remoting.JmsInvokerServiceExporter">
       	<property name="service" ref="helloService"/>
       	<property name="serviceInterface" value="com.cathy.demo.jms.service.HelloWord"/>
       </bean>
       <bean id="helloService" class="com.cathy.demo.jms.service.HelloWordImpl"/>
       <bean class="org.springframework.jms.listener.SimpleMessageListenerContainer">
       		<property name="connectionFactory" ref="connectionFactory"/>  
            <property name="destination" ref="destination"/>
            <property name="messageListener" ref="jmsServiceExporter"/>  
       </bean>
    /**
     *
     * @author zhangwei_david
     * @version $Id: HelloWord.java, v 0.1 2015年2月3日 下午9:10:44 zhangwei_david Exp $
     */
    public interface HelloWord {
    
        public void sayHello(String name);
    }
    
    /**
     *
     * @author zhangwei_david
     * @version $Id: HelloWordImpl.java, v 0.1 2015年2月3日 下午9:11:42 zhangwei_david Exp $
     */
    @Component
    public class HelloWordImpl implements HelloWord {
    
        @Autowired
        private Producer producer;
    
        public void sayHello(String name) {
            Mail mail = new Mail();
            mail.setContent("Hello," + name);
            mail.setTo(name);
            producer.send(mail);
        }
    
    }

     这样我们就可以将JMS导出为一个服务

    访问基于JMS的服务

     <bean id="myHelloService" class="org.springframework.jms.remoting.JmsInvokerProxyFactoryBean">
       		<property name="connectionFactory" ref="connectionFactory"/>
       		<property name="queue" ref="destination"/>
       		<property name="serviceInterface" value="com.cathy.demo.jms.service.HelloWord"/>
       </bean>
        @Test
        public void testSend() throws JMSException, InterruptedException {
            myHelloService.sayHello("Test");
        }

     测试的结果是:

    2015-02-03 21:31:52  [ main:860 ] - [ INFO ]  Starting beans in phase 2147483647
    JMS invoker proxy for queue [queue://message.queue]
    sende->Mail[mailId=<null>,from=<null>,to=Test,content=Hello,Test]
  • 相关阅读:
    JavaScript--事件绑定及深入(26)
    JavaScript--事件对象(25)
    JavaScript--事件入门(24)
    JavaScript--动态加载脚本和样式(23)
    JavaScript--DOM元素尺寸和位置(22)
    JavaScript--DOM操作表格及样式(21)
    JavaScript--DOM进阶(20)
    jQuery-瀑布流的取巧做法分享
    Less开发指南(二)- 基本语法
    less开发指南(一)- 小牛试刀
  • 原文地址:https://www.cnblogs.com/wei-zw/p/8797791.html
Copyright © 2011-2022 走看看