【发布时间】:2022-12-01 05:44:23
【问题描述】:
在我以前的生活中,我参与了一些 Apache Camel 项目,所以我对 EIP 并不陌生,但我现在正在尝试学习和理解 Spring Integration。我有(我认为是)一小段用于“流”的代码:
- 定义用于管理和监控流程的控制总线
- 流程首先从文件夹中提取 PNG 图像(每天轮询一次新图像);然后
- 将它们上传到 FTP 服务器上的目录
FileReadingMessageSource fileSource = new FileReadingMessageSource(); fileSource.setBeanName("fileMessageSource"); fileSource.setDirectory(new File("C:/DestDir")); fileSource.setAutoCreateDirectory(true); DefaultFtpSessionFactory ftpSessionFactory = new DefaultFtpSessionFactory(); IntegrationFlow flow = IntegrationFlows.from(fileSource, configurer -> configurer.poller(Pollers.cron("0 0 * * *"))) .filter("*.png") // only allow PNG files through .controlBus() // add a control bus .handle(Ftp.outboundAdapter(ftpSessionFactory, FileExistsMode.FAIL) .useTemporaryFileName(false) .remoteDirectory("uploadDir")) .get();虽然不可否认我有点不确定“流动“ 和 ”频道“用 Spring Integration 的说法(我相信流是通道的组合,通道连接各个端点,也许吧?),我不明白,鉴于我上面的代码,控制总线如何可以利用来打开/关闭
fileSource输入端点。我知道使用控制总线,您将 SPeL 消息发送到通道,控制总线获取这些 SPeL 消息并使用它们来确定要调用哪些 bean/方法,但上面我从
FileReadingMessageSource开始我的流程。那么我需要发送到哪个通道的确切消息是什么,以便它停止/暂停或启动/重新启动FileReadingMessageSource端点?我的想法是,如果我使用控制总线关闭
FileReadingMessageSource,那么日复一日,没有 PNG 文件会上传到 FTP 服务器,直到我使用控制总线将其重新打开。感谢您在这里提供的所有帮助!
【问题讨论】:
标签: spring-integration enterprise-integration control-bus