Spring 之 JMS 基于JMS的RPC

本文详细介绍了如何使用Spring框架结合JMS(Java Message Service)进行服务导出和调用,包括配置JMS服务导出工厂类、实现服务接口以及创建消息监听容器等关键步骤。通过示例代码展示了如何将JMS服务导出为一个可调用的服务,并通过JMS代理访问此服务,最终验证了服务调用的正确性和效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      使用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]

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值