Я хотел бы использовать SourcePollingChannelAdapter с ТРЕБУЕМЫМ распространением транзакции, когда опрос реализован, чтобы откатить все операции в случае возникновения ошибки. Метод setTransactionSynchronizationFactory не комментируется... Большое спасибо за помощь!
В XML я могу сделать:
<int:poller fixed-rate="5000">
<int:transactional transaction-manager="transactionManager" propagation="REQUIRED" />
</int:poller>
Я хотел бы использовать подобную транзакцию программно с SourcePollingChannelAdapter и PeriodicTrigger, но я не знаю, как это сделать.
У меня есть это :
SourcePollingChannelAdapter adapter = new SourcePollingChannelAdapter();
adapter.setSource(source);
adapter.setTrigger(new PeriodicTrigger(5, TimeUnit.SECONDS));
adapter.setOutputChannel(channel);
adapter.setBeanFactory(ctx);
adapter.start();
Когда вызывается источник компонента, элемент в базе данных удаляется, сообщение создается и отправляется в выходной канал; но если у меня есть ошибка в потоке после выходного канала, я бы хотел, чтобы база данных была восстановлена, а элемент вернулся ... на самом деле простая транзакция с распространением. Я не понимаю, как это сделать.
Выходной канал:
<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" />
Когда URL-адрес не отвечает, создается исключение, но откат не выполняется, хотя я добавил DefaultTransactionSynchronizationFactory и TransactionInterceptor, как вы сказали :(
poller
можно пометить<transactional synchronization-factory="syncFactory">
. Здесь, пожалуйста: docs.spring.io/spring-integration/docs/2.2.6.RELEASE/reference/ - person Artem Bilan   schedule 17.10.2013