服务激活器处理程序不是 运行 串行
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
.
我无法连续获取服务激活器处理程序 运行,它们似乎没有一个接一个地 运行。在下面的代码中,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
.