0

我无法让服务激活器处理程序连续运行,它们似乎没有一个接一个地运行。在下面的代码中,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();
}
4

1 回答 1

1

正如我在其他地方所说,你应该回到书籍和参考手册。

在这里我们应该记住,在它们之间.handle()有一个隐式MessageChannel的,第一个.handle()将其执行结果发送到下一个。

我真的怀疑它们可能会以您所描述的错误方式被调用。但是,您可能会在日志中看到一些内容,因为一切都是通过 that 以异步模式执行的taskExecutor

我以某种方式相信这fileWriterMessageHandler()是一个标准FileWritingMessageHandler。这个期望一个java.io.File作为payload请求消息的一个。因此,如果您想在自定义服务方法之后调用它,您应该确保最后一个返回一个File对象而不是boolean.

于 2017-11-29T20:00:42.770 回答