SourcePollingChannelAdapter z transakcją
Chciałbym użyć SourcePollingChannelAdapter z propagacją transakcji WYMAGANE podczas sondowania, aby wycofać wszystkie operacje, jeśli wystąpi błąd. Metoda setTransactionSynchronizationFactory nie jest komentowana ... Bardzo dziękuję za pomoc!
W XML mogę to zrobić:
<int:poller fixed-rate="5000">
<int:transactional transaction-manager="transactionManager" propagation="REQUIRED" />
</int:poller>
Chciałbym programowo wykorzystać transakcję taką jak SourcePollingChannelAdapter i PeriodicTrigger, ale nie wiem jak.
Mam to :
SourcePollingChannelAdapter adapter = new SourcePollingChannelAdapter();
adapter.setSource(source);
adapter.setTrigger(new PeriodicTrigger(5, TimeUnit.SECONDS));
adapter.setOutputChannel(channel);
adapter.setBeanFactory(ctx);
adapter.start();
Gdy wywoływane jest źródło fasoli, element w bazie danych jest usuwany, wiadomość jest tworzona i wysyłana w kanale wyjściowym; ale jeśli mam błąd w przepływie po przywróceniu ouputchannel, a baza danych powróci i element powróci ... prosta transakcja z propagacją. Nie rozumiem jak to zrobić.
Ouputchannel to:
<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" />
Gdy adres URL nie odpowiada, zgłaszany jest wyjątek, ale nie jest wykonywane wycofywanie, chociaż dodałem DefaultTransactionSynchronizationFactory i TransactionInterceptor, jak powiedziałeś :(