• 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]
  • 相关阅读:
    django form表单验证
    Django messages框架
    pymysql 操作数据库
    python数据类型详解及列表字典集合推导式详解
    深入flask中的request
    修改sqlarchemy源码使其支持jdbc连接mysql
    深入理解Python中协程的应用机制: 使用纯Python来实现一个操作系统吧!!
    svg坐标转换
    近几年总结
    frp中的json模块
  • 原文地址:https://www.cnblogs.com/wei-zw/p/8797791.html
Copyright © 2020-2023  润新知