【问题标题】:Stopping and restarting Spring Integration input endpoints via control bus通过控制总线停止和重启 Spring Integration 输入端点
【发布时间】:2022-12-01 05:44:23
【问题描述】:

在我以前的生活中,我参与了一些 Apache Camel 项目,所以我对 EIP 并不陌生,但我现在正在尝试学习和理解 Spring Integration。我有(我认为是)一小段用于“流”的代码:

  1. 定义用于管理和监控流程的控制总线
  2. 流程首先从文件夹中提取 PNG 图像(每天轮询一次新图像);然后
  3. 将它们上传到 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


    【解决方案1】:

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

    请参阅此问答中的最新示例。

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

    【讨论】:

    • 嗯?那是你的问题,你接受了答案。
    • 看看EIP书里什么是Message Channel:enterpriseintegrationpatterns.com/MessageChannel.htmlIntegrationFlow 只是一个配置容器,用于在逻辑上组合它们之间的端点和通道。在运行时,流没有任何值,只有通道和端点进行通信。或者更好的说法是端点通过它们之间的通道交换消息。 filter() 是错误的。我假设您指的是 FileReadingMessageSource.setFilter(FileListFilter<File> filter)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-13
    • 1970-01-01
    • 2018-09-04
    • 2017-04-27
    • 1970-01-01
    • 2018-10-20
    • 2014-12-12
    相关资源
    最近更新 更多