服务激活器处理程序不是 运行 串行

Service Activator Handlers not running serially

我无法连续获取服务激活器处理程序 运行,它们似乎没有一个接一个地 运行。在下面的代码中,fileWriterMessageHandler 方法在 fileUpload 方法之前被调用。 fileUpload 需要 return 的标准 return 值是多少?

@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();
}

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

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

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

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