我想使用Spring集成来开发应用程序以进行以下操作
我不确定如何配置它,我找不到任何好的文档。他们大多数是在xml中的配置,我想要java config。 我有这段代码,但这只是复制文件并删除源。我不知道如何处理来源。
@Bean
public MessageChannel fileInputChannel() {
return new DirectChannel();
}
@Bean
@InboundChannelAdapter(value = "fileInputChannel", poller = @Poller(fixedDelay = "1000"))
public MessageSource<File> fileReadingMessageSource() {
FileReadingMessageSource source = new FileReadingMessageSource();
source.setDirectory(new File(INBOUND_PATH));
source.setFilter(new SimplePatternFileListFilter("*.pdf"));
source.setLoggingEnabled(true);
return source;
}
@Bean
@ServiceActivator(inputChannel = "fileInputChannel")
public FileWritingMessageHandler fileWritingMessageHandler() {
FileWritingMessageHandler fileWritingMessageHandler = new FileWritingMessageHandler(
new File(OUTBOUND_PATH));
fileWritingMessageHandler.setAutoCreateDirectory(true);
fileWritingMessageHandler.setExpectReply(false);
fileWritingMessageHandler.setDeleteSourceFiles(true);
return fileWritingMessageHandler;
}
答案 0 :(得分:2)
您有一个特定的业务需求,即使我们有Java示例,也并不意味着您的用例将在此处涉及。我们完全愿意为Oleg在他的评论中提到的示例项目做出贡献,但是社区,这已经由您决定。我们在这里真的无法猜测示例中要涵盖的所有现场用例。
您的请求的某些解决方案可能是这样的:
fileInputChannel
必须是PublishSubscribeChannel
,而您现有的fileWritingMessageHandler()
是 second 订阅者。 @ServiceActivator
)来处理该文件,并按照您所说的将其存储在DB中,这肯定是该文件之后的下一个@ServiceActivator
。请参阅@Order
注释和提到的@ServiceActivator
,以确保按照正确的顺序订阅您的订阅者。由于您确实要移动文件,因此在发送到该FileWritingMessageHandler
之前对其进行处理非常重要。
此任务也可以使用Java DSL来完成,甚至它的代码可能要短得多。
说我想请您阅读以EIP Book开头的文档,以使自己熟悉集成的概念和原则。