Пользовательский шаг обработки интеграции Spring - PullRequest
0 голосов
/ 08 мая 2018

Мне нужно ввести шаг обработки в весеннюю интеграцию примерно так:

import org.springframework.messaging.Message;

public class SomeDocumentProcessingStep {

    public Message<MyDocument> process(Message<MyDocument> myMessage) {
        // do some manipulations with message like providing new headers;
        return resultingMessage;
    }
}

Вопрос в том, как включить такой шаг обработки в конфигурацию интеграции с пружиной? У меня что-то подобное:

<int:chain input-channel="someInput" output-channel="someOutput">
    <!--Here I want to use my processing step class -->
    <!--Chain contains other processing steps like transformations -->
</int:chain>

Один способ сделать это, если с service-activator, но тогда мне нужно отправить новое сообщение вручную из моего сервиса. Примерно так:

public class SomeService {
    private final MessageChannel outputChannel;
    private final MessagingTemplate template;
    // constructor ommited
    public void distribute(Message<MyDocument> message) {
        // do my manipulations
        template.send(outputChannel, resultingMessage);
    }
}

И настройте его примерно так:

<int:service-activator input-channel="someInput" ref="someService" method="distribute"/>

Но я чувствую, что это неправильный подход. Есть ли лучший способ сделать это внутри интеграционной цепочки? Мне нужен этот пользовательский шаг обработки, который будет в середине обработки сообщения. Использование <int:header-enricher> не достаточно для меня, поскольку оно обеспечивает способ создания заголовков один за другим. Я хочу сделать это в одном классе.

1 Ответ

0 голосов
/ 08 мая 2018

Вы идете правильным путем с <service-activator> внутри chain. Только проблема, с которой вы столкнулись, что вам не нужен этот канал на service-activator. Это цепочка - единая составная конечная точка для набора шагов. Итак, вам все равно нужно как-то отправить сообщение в этот someInput, но это уже будет точкой входа для всей цепочки. Пожалуйста, прочитайте документы по этому вопросу: https://docs.spring.io/spring-integration/docs/5.0.4.RELEASE/reference/html/messaging-routing-chapter.html#chain

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