我无法让服务激活处理程序连续运行,它们似乎不会一个接一个地运行。在下面的代码中,fileWriterMessageHandler方法在fileUpload方法之前调用。 fileUpload需要返回的标准返回值是什么?
@Bean
public IntegrationFlow
inboundChannelFlow(@Value("${file.poller.delay}") long delay,
@Value("${file.poller.messages}") int maxMsgsPerPoll,
TaskExecutor taskExecutor, MessageSource<File> fileSource)
{
return IntegrationFlows.from(fileSource,
c -> c.poller(Pollers.fixedDelay(delay)
.taskExecutor(taskExecutor)
.maxMessagesPerPoll(maxMsgsPerPoll)))
.handle("AWSFileManager", "fileUpload")
.handle(fileWriterMessageHandler())
.channel(ApplicationConfiguration.inboundChannel)
.get();
}
答案 0 :(得分:1)
正如我在其他地方所说的那样,你应该回到书籍和参考手册。
在这里,我们应该记住,在.handle()
之间存在隐式MessageChannel
,第一个.handle()
将执行结果发送到下一个。{/ p>
我真的怀疑他们可能会像你描述的那样以错误的方式被召唤。但是,您可能会在日志中看到某些内容,因为所有内容都是通过taskExecutor
以异步模式执行的。
我不知何故相信fileWriterMessageHandler()
是标准FileWritingMessageHandler
。这个期望java.io.File
作为请求消息的payload
。因此,如果您想在自定义服务方法之后调用此方法,则应确保最后一个返回File
对象而不是boolean
。