我创建了两个集成流程,一个是File inbound flow,它是查找我的本地目录,另一个是Sftp outbound flow,它将这些文件从本地发送到远程目录。我正在从Main类运行这些流,即不使用Junit。那么我如何从File Inbound流向Sftp outblound流发送消息。在Junit测试方法中,我可以使用send()方法进行文件传输,但在这种情况下无法发送文件。所以任何人都可以帮助我,因为我无法继续。
这是我的文件入站流程..
@Bean
public IntegrationFlow sftpOutboundFlow() {
System.out.println("enter out bound flow.....");
return IntegrationFlows
.from("toSftpChannel")
.handle(Sftp.outboundAdapter(this.sftpSessionFactory)
.remoteFileSeparator("\\")
.useTemporaryFileName(false)
.remoteDirectory(remDir)).get();
}
这是我的sftp出境流程..
@Bean
public IntegrationFlow fileReadingFlow() {
return IntegrationFlows
.from("fileReadingResultChannel")
.transform(Transformers.fileToByteArray())
.handle(Sftp.outboundAdapter(this.sftpSessionFactory)
.remoteFileSeparator("\\")
.useTemporaryFileName(false)
.remoteDirectory(remDir))
//.channel(this.fileReadingResultChannel)
.channel(MessageChannels.direct("fileReadingResultChannel"))
.get();
}
正如加里所说,我的新流程是......
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'fileReadingFlow' defined in class src.SftpOutBoundDsl: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.integration.dsl.IntegrationFlow]: Factory method 'fileReadingFlow' threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: The 'currentComponent' (org.springframework.integration.file.remote.handler.FileTransferringMessageHandler@629a) is a one-way 'MessageHandler' and it isn't appropriate to configure 'outputChannel'. This is the end of the integration flow.
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:602)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1111)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1006)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:504)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:762)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:686)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:320)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:957)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:946)
at src.MainSftpOutBoundDsl.main(MainSftpOutBoundDsl.java:14)
错误日志是......
.Range("$A:$S").AutoFilter field:=1, Criteria1:=Array("Ongoing", "Completed"), Operator:=xlFilterValues
.Range("$A:$S").AutoFilter field:=4, Criteria1:=Array("AQs", "Prop", "RF", "RP", "SQs"), Operator:=xlFilterValues
.Range("$A$1:$S$" & ActiveSheet.UsedRange.Rows.Count).AutoFilter field:=10, Criteria1:=">" & _
Format(Date - 7, "mm/dd/yyyy"), Operator:=xlOr, Criteria2:="=Not Known", Operator:=xlOr
答案 0 :(得分:1)
将入站适配器通道更改为使用...
MessageChannels.direct("fileReadingResultChannel")
并将两个流连接在一起......
return IntegrationFlows
.from("fileReadingResultChannel")
.handle(...
修改强>:
.channel(MessageChannels.direct(" fileReadingResultChannel&#34))
出站渠道适配器不会产生任何结果,因此您无法通过渠道跟踪它。
错误信息对我来说非常清楚......
... FileTransferringMessageHandler ...是一个单向的MessageHandler'并且配置" outputChannel'是不合适的。这是整合流程的结束。
...但如果您认为需要澄清,请告诉我们。
如果您希望在文件传输后继续流,请在变换器后添加publishSubscribeChannel
,如果文件传输成功,则消息将转到另一个订户(流)。