如何在SpringXML中定义多个rabbit:template?

How to define multiple rabbit:template in Spring XML?

我在spring中定义了两个rabbit:template xml:

<bean id="application.startup.status" class="org.springframework.amqp.remoting.client.AmqpProxyFactoryBean">
   <property name="serviceInterface" value="com.xxx.services.IStartupStatusService"/>
   <property name="amqpTemplate" ref="rmqTemplate_application_startup_status"/>
</bean>

<rabbit:template id="rmqTemplate_application_startup_status" connection-factory="rmqConnectionFactory" reply-timeout="2000"
   routing-key="remoting.application_startup_status"
   exchange="remoting.exchange.application_startup_status"/>

<rabbit:queue name="application_startup_status" />

<rabbit:direct-exchange name="remoting.exchange.application_startup_status">
   <rabbit:bindings>
        <rabbit:binding queue="application_startup_status" key="remoting.application_startup_status" />
   </rabbit:bindings>
</rabbit:direct-exchange>

<bean id="application.root.status" class="org.springframework.amqp.remoting.client.AmqpProxyFactoryBean">
  <property name="serviceInterface" value="com.xxx.services.IRootStatusService"/>
   <property name="amqpTemplate" ref="rmqTemplate_application_root_status"/>
</bean>

<rabbit:template id="rmqTemplate_application_root_status" connection-factory="rmqConnectionFactory" reply-timeout="2000"
    routing-key="remoting.application_root_status"     
    exchange="remoting.exchange.application_root_status"/>

<rabbit:queue name="application_root_status" />

<rabbit:direct-exchange name="remoting.exchange.application_root_status">
   <rabbit:bindings>
     <rabbit:binding queue="application_root_status" key="remoting.application_root_status" />
    </rabbit:bindings>
</rabbit:direct-exchange>

当 运行 我的应用程序出现错误时:

Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'org.springframework.amqp.rabbit.core.RabbitTemplate' available: expected single matching bean but found 3: rmqTemplate_application_startup_status, rmqTemplate_application_root_status

我根据第 http://docs.spring.io/spring-amqp/reference/htmlsingle/#remoting 页中的示例写下此 Spring XML。如何解决这个问题?

使用id作为变量名and/or使用@Qualifier.

@Autowired
@Qualifier("rmqTemplate_application_root_status")
private RabbitTemplate rootStatusTemplate;

<rabbit:template id="rootStatusTemplate" ...

@Autowired
private RabbitTemplate rootStatusTemplate;