Мне дали задание внести некоторые изменения в проект spring-integration
, который был разработан десять лет назад, и я знаю, как он работает, поэтому я посмотрел некоторые из spring-integration
учебных пособий, хотя я этого не делалпонять это полностью, я получил некоторые базовые знания об этом.Теперь я пытаюсь понять приведенный ниже фрагмент конфигурации spring-integration
конфигурации spring.integration.version 2.2.4.RELEASE
перед внесением изменений
<!-- Currency Pull from NetSuite -->
<int:gateway id="currencySyncGateway" service-interface="com.integration.service.INetSuiteCurrencyPullService" default-request-channel="currenciesFromNetSuite" />
<bean id="nsCurrencyPullService" class="com.integration.service.impl.NetSuiteCurrencyPullService" />
<int:channel id="currenciesFromNetSuite" />
<int:service-activator input-channel="currenciesFromNetSuite" ref="nsCurrencyPullService" method="getCurrencies" output-channel="pushCurrenciesToDB" />
<bean id="msSqlCurrencyPushService" class="com.integration.service.impl.MSSQLCurrencyPushService" />
<int:channel id="pushCurrenciesToDB" />
<int:service-activator input-channel="pushCurrenciesToDB" ref="msSqlCurrencyPushService" method="saveCurrenciesToDB" />
Ниже приведены соответствующие классы для указанных выше компонентов
INetSuiteCurrencyPullService
public interface INetSuiteCurrencyPullService {
List<Currency> getCurrencies(String in);
}
NetSuiteCurrencyPullService
public class NetSuiteCurrencyPullService implements INetSuiteCurrencyPullService {
@Autowired
INetSuiteClient restletClient;
@Override
public List<Currency> getCurrencies(String in) {
LOGGER.info("Retrieving currencies from NetSuite...");
PullCurrenciesRestletResponse response = restletClient.pullCurrencies();
LOGGER.debug("Restlet response: {}", response);
if ("SUCCESS".equals(response.getError().getCode())) {
LOGGER.info("Received restlet response: executionTimeMillis=" + response.getExecutionTimeMillis() + ", count=" + response.getCurrencies().size());
return response.getCurrencies();
} else {
String msg = "Error retrieving currencies from NetSuite: " + response.getError().getMessage();
LOGGER.error(msg);
throw new RuntimeException(msg);
}
}
}
MSSQLCurrencyPushService
public class MSSQLCurrencyPushService implements IMSSQLCurrencyPushService {
@Autowired
CurrencyConversionRepository currencyConversionRepository;
@Override
public List<Currency> saveCurrenciesToDB(List<Currency> in) {
// logic to save Currency in DB
return in;
}
}
Итак, мое понимание вышеspring-integration
конфигурирование после запуска приложения (исправьте, если оно неверно)
1. Spring инициализирует прокси-объект для INetSuiteCurrencyPullService
first
2. Затем запускает nsCurrencyPullService
bean
3. Затем вызывает getCurrencies
метод nsCurrencyPullService
4. И передает вывод saveCurrenciesToDB
метод msSqlCurrencyPushService
Пожалуйста, помогите мне с моими вопросами ниже
Так что вышеуказанные шаги выполняются только в течение весныЗапуск приложения?
Или это происходит через регулярные промежутки времени после запуска приложения?
Если оно выполняется через равные промежутки времени, где я могу проверить частоту опроса вызова nsCurrencyPullService
?