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]

?

?

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。