我需要在Spring集成中引入类似的处理步骤:
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;
}
}
问题是如何在spring集成配置中包含这样的处理步骤?我有类似的东西:
<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>
的使用对我来说是不够的,因为它只提供了逐个创建标题的方法。我想在一堂课中完成。
答案 0 :(得分:2)
您使用<service-activator>
内的chain
正确行事。只有您面临的问题是service-activator
上不需要该频道。它是一个链 - 一组步骤的单个复合端点。所以,你仍然必须以某种方式向someInput
发送消息,但这已经是整个链的入口点了。请阅读有关此事的文档:https://docs.spring.io/spring-integration/docs/5.0.4.RELEASE/reference/html/messaging-routing-chapter.html#chain