自定义入站通道适配器以调用Pojo服务

时间:2018-07-30 20:17:45

标签: spring-integration spring-integration-dsl

我需要根据传入文件夹的大小来启动/停止Ftp流。 我有一项验证文件夹大小的服务:

@Service
public class IncomingFolderChecker  {

  private static final int MAX_ALLOWED_SIZE = 2000000;

  @Value("${sftp.incoming}")
  private String incomingDir;

  @Autowired
  private MessageChannel controlChannel;

  public void checkFolderSize() {
    if (FileUtils.sizeOfDirectory(new File(this.incomingDir)) > MAX_ALLOWED_SIZE) {
      controlChannel.send(new GenericMessage<>("@sftpInboundAdapter.stop()")); // typo: was 'start()'
    } else {
      controlChannel.send(new GenericMessage<>("@sftpInboundAdapter.start()"));
    }
  }
}

我知道控制总线允许这样做。 但这就是我对Spring Integration的了解。 如何使用Java-DSL进行连接?

1 个答案:

答案 0 :(得分:1)

首先,您的条件两个分支都使用相同的AttributeError命令。我猜其中之一应该是start()。只要stop()是Control Bus组件的输入通道,您的代码就是正确的。要使用Java DSL做到这一点,您只需要一个简单的bean:

controlChannel

如果不是问题,请说明。

更新

一切都与Spring Integration样式及其Java DSL一起:

    @Bean
    public IntegrationFlow controlBusFlow() {
        return IntegrationFlows.from("controlChannel")
                .controlBus()
                .get();
    }