我有以下消息消費者爲什麼JMS監聽器工作不落實一個MessageListener
@Service
public class BlockServiceConsumer {
public void blockService(PhoneServiceVO phoneServiceVO) throws Exception {
// message processing
}
,並在與jms:listener-container
connectionFactory
和queue
定義Spring配置
<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
以類似於在EJB世界一個消息驅動Bean(MDB)的方式,消息驅動POJO(MDP)作爲JMS消息的接收器。 MDP的一個限制(但也可以參見下面關於MessageListenerAdapter類的討論)是它必須實現javax.jms.MessageListener接口。另請注意,在POJO將在多個線程中接收消息的情況下,確保您的實現是線程安全的非常重要。
因此,我所做的平均實現是完全有效的?即不執行'MessageListener' –
這是正確的。 –
感謝@Gary指出Spring Reference文檔 –