Spring интеграция scatterGather использование - PullRequest
0 голосов
/ 16 октября 2018

В моем случае использования мне нужно сделать 2 вызова REST, чтобы получить список элементов на основе DepartmentId.Мне нужно объединить два списка и обработать их.

Я использую шаблон scatterGather, я вижу, что fetchRoles & fetchGroups вызываются, но я не вижу "Aggregated List:", напечатанный в конце.Может кто-нибудь помочь мне, что не так в коде

@Bean
public IntegrationFlow processDomainFileFlow() {
    return IntegrationFlows
            .from("receiverChannel")
            .scatterGather(scatterer -> scatterer
                            .applySequence(true)
                            .recipientFlow(fetchRoles())
                            .recipientFlow(fetchGroups()))
            .log(INFO, CATEGORY, m -> "Aggregated List: " + m.getPayload())
            .get();
}

@Bean
public IntegrationFlow fetchRoles() {
    return IntegrationFlows.from("fetch.roles")
            .handle(outboundGateway( someServiceUrl + "/{departmentId}/roles")
                    .uriVariable("departmentId", m -> m.getHeaders().get("departmentId"))
                    .httpMethod(HttpMethod.GET)
                    .expectedResponseType(Item[].class))
            .get();
}

@Bean
public IntegrationFlow fetchGroups() {
    return IntegrationFlows.from("fetch.groups")
            .handle(outboundGateway(someServiceUrl + "/{departmentId}/groups")
                    .uriVariable("departmentId", m -> m.getHeaders().get("departmentId"))
                    .httpMethod(HttpMethod.GET)
                    .expectedResponseType(Item[].class))
            .get();
}

1 Ответ

0 голосов
/ 16 октября 2018

Поскольку вы используете стратегию корреляции по умолчанию в gatherer, вы пропускаете

/**
 * @param applySequence the applySequence.
 * @return the router spec.
 * @see AbstractMessageRouter#setApplySequence(boolean)
 */
public S applySequence(boolean applySequence) {

в scatterer, чтобы позволить ему заполнять заголовки деталей стандартной последовательности, чтобы позволить по умолчаниюлогика корреляции для выполнения своей работы на основе предоставленных заголовков сведений последовательности: https://docs.spring.io/spring-integration/reference/html/messaging-routing-chapter.html#scatter-gather-functionality

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...