0

我在Spring集成DSL配置流程:Spring集成的Java DSL:缓冲的消息流,并把处理程序在单独的线程

​​

根据日志,一切都发生顺序在线程“主要”。顺便说一句,我使用publishSubscribeChannel作为并行我有兔子发布者/处理程序,以相同的方式监听此频道。

由于数据库操作需要时间,因此我应该如何正确地处理处理,以便“main”不会变慢。优选地,主线程必须尽快解锁并且处理应该在工作线程中继续。我对么?

我可以在Flow中引入一个缓冲区,它将从publishSubscribeChannel收集消息的突发?

此外,我更喜欢其他线程(池)来处理实际发送,以便从正在执行流的主线程中移除负载。我很清楚Spring中的ThreadPoolTask​​Executor,它们都有一个缓冲区和一个线程池。它是一种很好的使用方式,以及如何以Java DSL方式使用ThreadPoolTask​​Executor?

回答

0

有对此事的构造函数:它喜欢

/** 
* Create a PublishSubscribeChannel that will use an {@link Executor} 
* to invoke the handlers. If this is null, each invocation will occur in 
* the message sender's thread. 
* 
* @param executor The executor. 
*/ 
public PublishSubscribeChannel(Executor executor) { 

http://docs.spring.io/spring-integration/reference/html/messaging-channels-section.html#channel-configuration-pubsubchannel

使用Java DSL你可以声明:

@Bean 
PublishSubscribeChannel publishSubscribeChannel(Executor executor) { 
    return Channels.publishSubscribe(executor).get(); 
} 
相关问题