Domanda

Qual è il modo migliore per eseguire l'inizializzazione su DefaultMessageListenerContainer inizializzazione? Attualmente sto aspettando primo messaggio, e tenere traccia di esso mediante una variabile booleana, che non è così bella. C'è un modo migliore ? Voglio leggere e caricare alcuni dati nella cache una volta che il messaggio Driven POJO viene avviata, in modo che il messaggio di elaborazione è più veloce.

(Edited)

Spring Config Fragement:

<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>

mi piacerebbe avere un po 'di inizializzazione eseguita prima di ogni messaggio viene ricevuto da chi ascolta.

È stato utile?

Soluzione

Non puoi semplicemente usare @PostConstruct per annotare un metodo su ItemMDPImpl per eseguire l'inizializzazione di avvio, proprio come qualsiasi altro bean Spring?

4.9.6 @PostConstruct e @PreDestroy

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top