Мой опроллер извлекает данные из БД и передает их активатору службы. Если какое-либо исключение происходит в методе активатора службы, я должен откатить данные, извлеченные в предыдущее состояние, и снова отправить те же данные активисту службы только для определенного количества повторных попыток (скажем, 3) . ** Возможно ли это сделать в xml-конфигурации. ? Для получения подробной информации я расскажу о настройках poller и активаторе сервиса. poller.xmlВозврат весеннего опрокера по исключению после определенного количества повторных попыток
\t <int-jdbc:inbound-channel-adapter id="datachannel"
\t \t query="select loyalty_id,process_id,mobile_uid from TBL_RECEIPT where r_cre_time
\t \t =(select min(r_cre_time) from TBL_RECEIPT where receipt_status=0)"
\t \t data-source="dataSource" max-rows-per-poll="1"
\t \t update="update TBL_RECEIPT set receipt_status=11 where process_id in (:process_id)">
\t \t <int:poller fixed-rate="5000">
\t \t <int:transactional/>
\t \t </int:poller>
\t </int-jdbc:inbound-channel-adapter>
<int:channel id="errors">
<int:queue/>
</int:channel>
<bean id="poller" class="main.java.com.as.poller.PollerService" />
\t <int:channel id="executerchannel">
\t \t <int:dispatcher task-executor="taskExecutor" />
\t </int:channel>
\t <task:executor id="taskExecutor" pool-size="2" />
\t <int:service-activator input-channel="datachannel"
\t \t output-channel="executerchannel" ref="poller" method="getRecordFromPoller">
\t \t \t <int:request-handler-advice-chain>
\t \t <int:retry-advice recovery-channel="errors" />
\t \t </int:request-handler-advice-chain>
\t </int:service-activator>
\t
<int:service-activator input-channel="executerchannel"
\t \t ref="poller" method="getDataFromExecuterChannel">
\t </int:service-activator>
\t
службы метод активатор
@SuppressWarnings({ "unchecked", "rawtypes" })
\t @ServiceActivator
\t public void processMessage(Message message) throws IOException {
\t \t int capLimit = Integer.parseInt(env.getProperty("capping_limit"));
\t \t
\t \t List<Map<String, Object>> rows = (List<Map<String, Object>>) message
\t \t \t \t .getPayload();
\t \t for (Map<String, Object> row : rows) {
\t \t \t String loyaltyId = (String) row.get("loyalty_id");
\t \t \t String processId = (String) row.get("process_id");
\t \t \t String xid=(String)row.get("mobile_uid");
я слышал о int: transactional используется в конфигурации poller. Но когда я добавил его, он взял ту же запись даже после успешной транзакции. (означает, что он каждый раз откатывается). Может кто-нибудь, пожалуйста, помогите мне в этом?
Могу ли я спросить, почему вы хотите выполнить те же самые вещи, зная, что это провалится? –
от активатора службы Я звоню во внешнюю систему. Если я получаю любое исключение из этой службы, мне нужно отменить транзакцию и повторить попытку – chungunuvavaa