2014-09-25 2 views
0

각 교환기에 대해 다른 라우팅 키를 사용하여 여러 교환기를 수신 대기하는 응용 프로그램에 하나의 대기열이 있습니다.rabbitmq spring에서 동일한 대기열에 대한 여러 교환기의 메시지를 처리하도록 수신기를 구성하는 방법

나는 다음과 같은 방법으로 그 교환 중 하나에서 메시지를 처리하는 리스너를 구성한 :

<bean id="exampleMessageConverter"  class="org.springframework.amqp.support.converter.JsonMessageConverter"> 
    <property name="classMapper"> 
     <bean class="<packagename>.NamedClassMapper"> 
      <constructor-arg value="<packagename>.exampleDTO" /> 
     </bean> 
    </property> 
</bean> 

<bean id="organizationUpdateEventListener" class="org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer"> 
    <property name="connectionFactory" ref="connectionFactory" /> 
    <property name="queueNames" value="${main.queue}" /> 
    <property name="messageListener"> 
     <bean class="org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter"> 
      <constructor-arg> 
       <bean class="<packageName>.exampleMessageEventHandler" /> 
      </constructor-arg> 
      <constructor-arg ref="exampleMessageConverter" /> 
     </bean> 
    </property> 
    <property name="adviceChain"> 
     <list> 
      <ref bean="retryAdvice" /> 
     </list> 
    </property> 
</bean> 

내가 다른 교류의 메시지를 처리 ​​할 수있는 동일한 수신기를 구성 할 수 있지만, DTO는에서 전송 그 교환의 각각은 다릅니다.

EDIT : 두 번째 생성자 인수는 모든 라우팅 키에 대해 달라야합니다. 어떻게 구성을 추가 할 수 있습니까?

어떻게 진행합니까?

답변

1

AMQP 프로토콜을 조금 이해하지 못하는 것 같습니다.

생산자가 routingKey을 통해 Exchange에 메시지를 보냅니다.

bindqueue부터 Exchange까지는 routingKey이어야합니다.

물론 queue에 대해 여러 개의 바인딩을 가질 수 있습니다. Exchange 및 다른 routingKey입니다. 그러나 어쨌든 그것은 같은 큐가 될 것입니다.

따라서 대기열의 메시지 만 수신하도록 수신기를 구성해야합니다. 왜냐하면 메시지 때문에 대기열에 메시지가 표시되는 방식이 중요하지 않기 때문입니다. 내가 제대로 질문 ...

UPDATE를 이해하지 않은 경우

죄송합니다, 내가 원하는

이 필요 <constructor-arg ref="exampleMessageConverter" /> 두 번째 생성자 인수가 모든 라우팅 키에 대한 다를 수 있다는 점이다. 봄 AMQP Message

당신은 SimpleMessageListenerContainer에서, 당신은 당신의 목표 exampleMessageEventHandler 어딘가에 하류 원하는 routing 논리를 달성 할 수 할 수없는

MessageProperties 속성을 getReceivedExchange() 분명 존재하지 않는 getReceivedRoutingKey()

+0

죄송있다 내가 두 번째 생성자 인수 은 모든 라우팅 키마다 달라야합니다. 어떻게 구성합니까? –

+0

설명에 대한 답변을 추가했습니다. 감사 –

관련 문제