Вопрос

Как лучше всего выполнить инициализацию при инициализации DefaultMessageListenerContainer? В настоящее время я жду первого сообщения и отслеживаю его, используя логическую переменную, что не так красиво. Есть ли способ лучше ? Я хочу прочитать и загрузить определенные данные в кэш после запуска POJO, управляемого сообщением, поэтому обработка сообщений быстрее.

(Отредактировано)

Весенняя конфигурация:

<bean id="itemListener" class="com.test.ItemMDPImpl" autowire="byName" />

<bean id="itemListenerAdapter" class="org.springframework.jms.listener.adapter.MessageListenerAdapter">
    <property name="delegate" ref="itemListener" />
    <property name="defaultListenerMethod" value="processItems" />
    <property name="messageConverter" ref="itemMessageConverter" />
</bean>

<bean class="org.springframework.jms.listener.DefaultMessageListenerContainer">
    <property name="connectionFactory" ref="itemMqConnectionFactory" />
    <property name="destinationName" value="${item_queue_name}" />
    <property name="messageListener" ref="itemListenerAdapter" />
    <property name="transactionManager" ref="jtaTransactionManager" />
    <property name="sessionTransacted" value="true" />
    <property name="concurrentConsumers" value="1" />
    <property name="receiveTimeout" value="3000" />
</bean>

Я хотел бы сделать некоторую инициализацию, прежде чем какое -либо сообщение будет получено слушателем.

Это было полезно?

Решение

Разве ты не можешь просто использовать @PostConstruct аннотировать метод на ItemMDPImpl Чтобы выполнить инициализацию запуска, как и любой другой пружинный боб?

4.9.6 @postconstruct и @predestroy

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top