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