您的位置:首页 > 编程语言 > Java开发

rabbitmq学习11:基于rabbitmq和spring-amqp的远程接口调用

2016-04-22 14:31 691 查看
 此远程接口调用是基于RPC的

 

   先来看看提供暴露接口方法的配置

 

Xml代码  


<?xml version="1.0" encoding="UTF-8"?>  

<beans xmlns="http://www.springframework.org/schema/beans"  

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  

    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">  

    <bean id="connectionFactory"  

        class="org.springframework.amqp.rabbit.connection.SingleConnectionFactory">  

        <constructor-arg value="localhost" />  

        <property name="username" value="guest" />  

        <property name="password" value="guest" />  

    </bean>  

    <bean id="amqpAdmin"  

        class="org.springframework.amqp.rabbit.core.RabbitAdmin">  

        <constructor-arg ref="connectionFactory" />  

    </bean>  

    <bean id="rabbitTemplate"  

        class="org.springframework.amqp.rabbit.core.RabbitTemplate">  

        <constructor-arg ref="connectionFactory"></constructor-arg>  

    </bean>  

    <bean id="testService" class="com.abin.test.TestServiceImpl"></bean>  

  

    <bean  

        class="org.springframework.amqp.rabbit.remoting.RabbitInvokerServiceExporter">  

        <property name="connectionFactory" ref="connectionFactory" />  

        <property name="serviceInterface"  

            value="com.abin.test.TestService" />  

        <property name="service" ref="testService" />  

        <property name="exchange" value="service_exhange" />  

        <property name="exchangeTypes" value="topic" />  

        <property name="routingKey" value="routing.example.service" />  

        <property name="queueName" value="incoming_queue_name" />  

        <property name="poolsize" value="5" />  

    </bean>  

</beans>  

 

    RabbitInvokerServiceExporter类用于把接口services放到一个类型为“direct”的queue或者exchange中,并处理远程接口调用的回调。

 

    远程调用配置如下:

Xml代码  


<?xml version="1.0" encoding="UTF-8"?>  

<beans xmlns="http://www.springframework.org/schema/beans"  

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  

    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">  

    <!-- 创建connectionFactory -->  

    <bean id="connectionFactory"  

        class="org.springframework.amqp.rabbit.connection.SingleConnectionFactory">  

        <constructor-arg value="localhost" />  

        <property name="username" value="guest" />  

        <property name="password" value="guest" />  

    </bean>  

    <!-- 创建rabbitAdmin 代理类 -->  

    <bean id="rabbitAdmin"  

        class="org.springframework.amqp.rabbit.core.RabbitAdmin">  

        <constructor-arg ref="connectionFactory" />  

    </bean>  

    <!-- 创建rabbitTemplate 消息模板类 -->  

    <bean id="rabbitTemplate"  

        class="org.springframework.amqp.rabbit.core.RabbitTemplate">  

        <constructor-arg ref="connectionFactory"></constructor-arg>  

    </bean>  

  

    <bean id="testService"  

        class="org.springframework.amqp.rabbit.remoting.RabbitInvokerProxyFactoryBean">  

        <property name="connectionFactory" ref="connectionFactory" />  

        <property name="serviceInterface"  

            value="com.abin.test.TestService">  

        </property>  

        <property name="exchange" value="service_exhange" />  

        <property name="exchangeTypes" value="topic" />  

        <property name="routingKey" value="routing.example.service" />  

    </bean>  

  

    <bean id="testAction" class="com.abin.action.TestAction">  

        <property name="testService" ref="testService" />  

    </bean>  

</beans>  

 

 RabbitInvokerProxyFactoryBean类通过拦截器方法调用在rabbitmq中已提供的远程接口信息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  rabbitmq 框架