首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过控制总线停止和重新启动Spring集成输入端点

通过控制总线停止和重新启动Spring集成输入端点
EN

Stack Overflow用户
提问于 2022-11-30 21:24:29
回答 1查看 24关注 0票数 0

在我以前的生活中,我从事过几个Apache项目,所以我对EIP并不完全陌生,但我现在正在努力学习和理解Spring集成。我有(我认为是)一个“流”的小代码片段:

  1. 定义了一个控制总线,用于管理和监视Flow
  2. 流,首先从文件夹中获取PNG图像(每天轮询一次新的图像);然后
  3. 将它们上传到FTP服务器

上的目录中。

代码语言:javascript
复制
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术语中,我对“flow”和" channels“之间的区别有点不确定(我相信流是通道的组合,通道可能连接各个端点?),但我不明白,考虑到上面的代码,控制总线是如何利用来打开/关闭fileSource输入端点的。

我知道,通过控制总线,您可以向通道发送SPeL消息,而控制总线接受这些SPeL消息,并使用它们来确定要调用哪些bean/方法,但在上面,我从一个FileReadingMessageSource开始我的流。那么,我需要向哪个通道发送确切的消息,以便它停止/暂停或启动/重新启动FileReadingMessageSource端点?

这样做的想法是,如果我使用控制总线关闭FileReadingMessageSource,那么日复一日,任何PNG文件都不会上传到FTP服务器,直到我使用控制总线打开它为止。

谢谢你们的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-30 21:33:39

控制总线需要在它自己的流中,而不是在另一个流中的一个组件中;您可以向它发送控制消息,以控制其他端点。

在这个问题和答案中,请参阅最近的一个例子。

Using Control Bus EIP in Spring Integration to start/stop channels dynamically

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74634331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档