2013-05-27 4 views
0

Я следующий потребителя СообщениеПочему JMS слушатель работает без внедрения MessageListener

@Service 
public class BlockServiceConsumer { 

public void blockService(PhoneServiceVO phoneServiceVO) throws Exception { 

    // message processing 

} 

и после конфигурации пружинной с jms:listener-containerconnectionFactory и queue определения

<context:component-scan base-package="com.stealthgenie.scheduler" /> 
<context:annotation-config/> 

<bean id="blockServiceQueue" class="org.apache.activemq.command.ActiveMQQueue"> 
    <constructor-arg value="BLOCK_SERVICE.QUEUE"/> 
</bean> 

<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> 
    <property name="brokerURL"> 
     <value>tcp://localhost:61616</value> 
    </property> 
</bean> 

<jms:listener-container acknowledge="auto" connection-factory="connectionFactory" destination-type="queue" concurrency="10-20"> 
    <jms:listener destination="BLOCK_SERVICE.QUEUE" ref="blockServiceConsumer" method="blockService" /> 
</jms:listener-container> 

Мой вопрос: почему эта установка работает нормально без применения MessageListener, хотя в документации упоминается, что это необходимо. Примечание Кроме того, я не использовал MessageListenerAdapter

В моде по аналогии с Message-Driven Bean (MDB) в EJB мире, управляемый сообщениями POJO (MDP) выступает в качестве приемника для сообщений JMS. Одно ограничение (но см. Также ниже для обсуждения класса MessageListenerAdapter) на MDP заключается в том, что он должен реализовать интерфейс javax.jms.MessageListener. Также имейте в виду, что в случае, когда ваш POJO будет получать сообщения в нескольких потоках, важно убедиться, что ваша реализация является потокобезопасной.

ответ

2

Эта документация имеет в виду, когда вы подключаете контейнер слушателя как <bean/> или программно.

При использовании пространства имен <jms:listener-container/> синтаксический анализатор подключается к MessageListenerAdapter, который будет вызывать ваше POJO из его метода onMessage.

Об этом говорится в справочном документе Section about JMS Namespace Support.

+0

так что это означает выполнение, которое я сделал, это действительно действительно? т.е. без реализации «MessageListener» –

+0

Это верно. –

+0

Спасибо @Gary за указание на весенние справочные документы –

Смежные вопросы