Spring XD - 在运行时更改文件源目录

Spring XD - Change File Source directory at runtime

我想在运行时更改文件源的配置。根据我在文档和源定义中看到的内容,目录是静态定义的(即没有表达式),请参见 the bean definition.

我知道使用普通 Spring 集成可以在入站文件通道适配器上调用 setDirectory(...)。有什么方法可以在 XD 中做同样的事情吗?

提前致谢。

虽然您可以在消息源上调用 setDirectory(),但请注意 auto-create-directory(默认 true)将不起作用 - 该目录是在创建 bean 期间创建的。但是,它适用于现有目录。

做你想做的一种可能性是自定义文件源以添加一个包装器 MBean 它将委托给 FileReadingMessageSource.setDirectory() 你可以使用 bean name <adapterId>.source(你必须给适配器一个 id 属性)。

然后您可以通过 JMX 更改目录(或通过添加 control-bus 向您的包装器发送消息 - 在这种情况下,您将需要一些其他技术来将消息发送到控制总线 - http 、tcp 等)。