8

JMS API (HornetQ を使用) を使用しており、メッセージ リスナー コンテナーとメッセージ リスナーに Spring Bean を使用しています。

<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);
4

1 に答える 1

8

この方法でMessageListenerContainerに追加できるはずです。

p:messageSelector="color='red'"

于 2012-10-10T13:58:57.893 に答える