我需要根据传入文件夹的大小来启动/停止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进行连接?
答案 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();
}