Pregunta

¿Cuál es la mejor manera de realizar la inicialización en la inicialización de MessesSageListenContainer? Actualmente estoy esperando el primer mensaje, y lo realizo usando una variable booleana, que no es tan bonita. ¿Hay una mejor manera? Quiero leer y cargar ciertos datos en el caché una vez que se inicia el POJO impulsado por el mensaje, por lo que el procesamiento de mensajes es más rápido.

(Editado)

Fragmento de configuración de primavera:

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

Me gustaría hacer algo de inicialización antes de que el oyente reciba cualquier mensaje.

¿Fue útil?

Solución

¿No puedes usar solo @PostConstruct anotar un método en ItemMDPImpl Para realizar la inicialización de inicio, al igual que cualquier otro frijol de primavera?

4.9.6 @PostConstruct y @Predestroy

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top