SourcePollingChannelAdapter com transação
Eu gostaria de usar um SourcePollingChannelAdapter com uma propagação de transação necessária quando a pesquisa é realizada, para reverter todas as operações, se ocorrer um erro. O método setTransactionSynchronizationFactory não é comentado ... Muito obrigado pela sua ajuda!
Em XML eu posso fazer:
<int:poller fixed-rate="5000">
<int:transactional transaction-manager="transactionManager" propagation="REQUIRED" />
</int:poller>
Eu gostaria de usar uma transação como esta programaticamente com um SourcePollingChannelAdapter e um PeriodicTrigger, mas eu não sei como.
Eu tenho isto :
SourcePollingChannelAdapter adapter = new SourcePollingChannelAdapter();
adapter.setSource(source);
adapter.setTrigger(new PeriodicTrigger(5, TimeUnit.SECONDS));
adapter.setOutputChannel(channel);
adapter.setBeanFactory(ctx);
adapter.start();
Quando a origem do bean é chamada, um elemento no banco de dados é excluído, uma mensagem é criada e enviada no outputchannel; mas se eu tiver um erro no fluxo após o ouputchannel gostaria de banco de dados restaurado e elemento voltou ... uma transação simples, de fato, com propagação. Eu não entendo como isso.
O canal de saída é:
<int:channel id="channel" >
<int:queue />
</int:channel>
<int-http:outbound-gateway request-channel="channel"
url="http://localhost:8081/icopitole-ws/baseactive" http-method="GET"
reply-channel="reresponseVersionChannel" expected-response-type="java.lang.String" />
Quando a URL não responde, uma exceção é lançada, mas nenhum Rollback é executado, embora eu tenha adicionado um DefaultTransactionSynchronizationFactory e TransactionInterceptor como você disse :(