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]
  • 相关阅读:
    安装 oracle 11g 发行版 出现错误:由于以下错误,Enterprise Manager配置失败,启动Database Control时出错
    ORACLE_SID的查找
    visual studio 2017 编译v140 TRACKER : error TRK0005: Failed to locate: "CL.exe". 系统找不到指定的文件
    mysql 数据库表名大小写问题
    Windows下部署mongodb
    where case 使用
    虚拟机,云服务器搭建vulhub靶场
    [De1CTF 2019]SSRF Me
    [2020YCTF]web1-rce_nopar
    [2020YCTF]
  • 原文地址:https://www.cnblogs.com/wei-zw/p/8797791.html
Copyright © 2011-2022 走看看