Мне нужно ввести шаг обработки в весеннюю интеграцию примерно так:
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>
не достаточно для меня, поскольку оно обеспечивает способ создания заголовков один за другим. Я хочу сделать это в одном классе.