2015-07-27 2 views
0

Я хочу назначить id для jms: listener-container bean, но, к сожалению, он не имеет свойства id. Например, это не работаетОпределить ListenerContainer без пространства имен jms весной jms

<jms:listener-container id="jmsListenerContainer" concurrency="${jms.consumer.concurrency}" > 
    <jms:listener id="queueHandler" destination="${jms.queue.name}" ref="queueListener" /> 
</jms:listener-container> 

Чтобы противостоять этому, я пытаюсь определить контейнер без имен, используя определение ванильный, например, так:

<bean id="jmsListenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer" 
    p:concurrency="${jms.consumer.concurrency}" p:connection-factory="jmsConnectionFactory" 
    p:messageListener-ref="jmsMessageListener"> 
</bean> 

Для этого, чтобы работать один нуждается фактический класс реализации MessageListener используется контейнер, как определение этого отдельно не работает

<jms:listener id="jmsMessageListener" destination="${jms.queue.name}" ref="queueListener" /> 

Это бросает The matching wildcard is strict, but no declaration can be found for element 'jms:listener'.

Из документации AbstractMessageListenerContainer: By default, only a standard JMS MessageListener object or a Spring SessionAwareMessageListener object will be accepted.

Это совершенно неубедительны, так кто-нибудь знает, как это можно сделать?

ответ

0

Я хотел бы предложить ответ на свой вопрос. Класс слушателя по умолчанию создается с jms:listener является org.springframework.jms.listener.adapter.MessageListenerAdapter

Вот полная замена ваниль конфигурации на основе JMS пространства имен:

<bean class="org.springframework.jms.listener.adapter.MessageListenerAdapter" id="jmsMessageListener" 
    p:delegate-ref="queueListener" /> 

<!-- Not using jms namespace, as it doesn't allow to specify bean id --> 
<bean id="jmsListenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer" 
    p:concurrency="${jms.consumer.concurrency}" p:connection-factory-ref="jmsConnectionFactory" 
    p:messageListener-ref="jmsMessageListener" p:destinationName="${jms.queue.name}" > 
</bean> 
+0

Это правильно. –

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