Spring 之 JMS 基于JMS的RPC

分类: 转载文章 0人评论 dexcoder 1年前发布

      使用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]
上一篇:
下一篇:

你可能感兴趣的文章

0 条评论