感谢您的关注 我在我的项目中使用了spring集成,我想从多个ftp服务器检索许多输入文件,其中不同的地址如下图所示:
如何在我的项目中动态创建inbound-adapter
来从服务器轮询和检索文件?
答案 0 :(得分:2)
如果您被允许使用非"一般可用性" (GA)版本的第三方库(例如,候选版本(RC)或里程碑(M)),然后您可以使用Spring Integration的5.0.0.M2
版本。这是截至09年3月17日的最新published版本。
从5.0
开始,Spring Integration包含 Java DSL运行时流注册功能。它允许您定义集成流程(包括入站适配器),就像在标准bean中一样,但它可以在任何运行时刻完成。
您需要使用的只有以下三个步骤:
IntegrationFlowContext
bean,例如通过自动装配: @Autowired
public MyClass(IntegrationFlowContext flowContext) {
this.flowContext = flowContext;
}
IntegrationFlowRegistration registration = flowContext
.registration(IntegrationFlows // this method accepts IntegrationFlow instance
.from(s -> s.ftp(ftpSessionFactory())
.localFilter(localFileFilter())
//other actions
.get()) // standard end of DSL flow building process
.autoStartup(true) // not required but can be useful
.register(); // this makes the flow exist in the context
IntegrationFlowContext
:// retrieve registration ID from the object created above
String dynamicFlowRegistrationId = registration.getId();
// the following will also gracefully stop all the processes within the flow
flowContext.remove(dynamicFlowRegistrationId);
GitHub上还有一个DynamicTcpClient sample。
答案 1 :(得分:1)
请参阅dynamic-ftp sample。虽然它只涵盖出站端,但README中有链接可以讨论在入站端需要做什么(将每个适配器放在子上下文中,将消息发送到主上下文中的通道)。
另请参阅我对similar question for multiple IMAP mail adapters using Java configuration和follow-up question的回答。
你应该可以使用那里使用的技术。