복붙노트

[SPRING] jms-spring 통합에서 메시지 리스너 빈에 메시지 선택기를 삽입하는 방법은 무엇입니까?

SPRING

jms-spring 통합에서 메시지 리스너 빈에 메시지 선택기를 삽입하는 방법은 무엇입니까?

JMS API (HornetQ 사용)로 작업 중이며 메시지 수신기 컨테이너 및 메시지 수신기에 스프링 빈을 사용하고 있습니다.

<bean id="messageListener" class="core.messaging.handler.MessageListener">
    <property name="postCommandService" ref="postCommandService" />
</bean>

<bean id="messageSender"
    class="lsn.messaging.sender.MessageSender">
    <property name="connectionFactory" ref="connectionFactory" />
    <property name="destination" ref="destination" />
</bean>

<bean id="msgListenerContainer"
  class="org.springframework.jms.listener.DefaultMessageListenerContainer" 
  p:connectionFactory-ref="connectionFactory"
  p:destination-ref="destination"
  p:messageListener-ref="messageListener"
  p:concurrentConsumers="10"
  p:maxConcurrentConsumers="50"
  p:receiveTimeout="5000"
  p:idleTaskExecutionLimit="10"
  p:idleConsumerLimit="5" />

내 메시지 수신기를 원한다면, 특정 메시지 (동일한 StringProperty를 가짐) 만 소비하면 어떻게해야합니까? 선택기는 어디에 정의해야합니까?

나는 아래의 솔루션을 가지고 있지만 MessageConsumer가 없으므로 선택기를 추가 할 수 없습니다.

     String redSelector = "color='red'";

     MessageConsumer redConsumer = session.createConsumer(queue, redSelector);
     redConsumer.setMessageListener(new SimpleMessageListener("red"));

     TextMessage redMessage = session.createTextMessage("Red");
     redMessage.setStringProperty("color", "red");

     producer.send(redMessage);

해결법

  1. ==============================

    1.MessageListenerContainer에 다음과 같이 추가 할 수 있어야합니다.

    MessageListenerContainer에 다음과 같이 추가 할 수 있어야합니다.

    p : messageSelector = "color = 'red'"

  2. from https://stackoverflow.com/questions/12820306/how-to-inject-a-message-selector-to-message-listener-bean-in-jms-spring-integrat by cc-by-sa and MIT license