Bom Dia Pessoal,
Consegui resolver meu problema da seguinte forma, como estou utilizando Spring ficou mais fácil. Para a minha fila em questão, configurei um ListenerContainer pelo Spring sendo que esse Container é instanciado mas não inicializado, ou seja não consome as mensagens. O segundo passo foi criar um Scheduler que altera o status do meu container (ou seja inicia ou pára) nesse Scheduler do Spring posso configurar qualquer tipo de lógica de agendamento, utilizando dessa forma consigo aproveitar o Transaction Manager no consumo e entrega das mensagens. No caso configurado abaixo, as mensagens serao consumidas de hora em hora, a cada 3600000 milisegundos. Abaixo seguem as configurações para ficar mais claro.
Pessoal muito obrigado e espero que a solução que encontrei ajude alguém, embora possam haver outras mais elegantes, essa me serviu como luva devido ao controle das duas partes (agendamento e gerência de transação).
Configuração do Listener Container da fila
<bean id="jmsOutputListenerContainer"
class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="connectionFactory" />
<property name="destination" ref="outputQueue" />
<property name="messageListener" ref="jmsOutputConsumer" />
<property name="sessionTransacted" value="true" />
<property name="autoStartup" value="false" />
</bean>
Configuração do Scheduler
<!-- Queue Jobs scheduler -->
<!-- Scheduler factory bean configuration -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="startOutputQListenerContainerTrigger" />
</list>
</property>
</bean>
<!-- Jobs Beans -->
<bean id="jobStartOutputQListenerContainer" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- the spring bean jmsDlqConsumer was definied via annotation -->
<property name="targetObject" ref="jmsListenerContainerManager" />
<property name="targetMethod" value="changeOutputContainerListenerStatus" />
</bean>
<!-- Job Triggers -->
<bean id="startOutputQListenerContainerTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="jobDetail" ref="jobStartOutputQListenerContainer" />
<property name="repeatInterval" value="3600000" />
</bean>
Obrigado.