Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java spring集成中的并发处理_Java_Spring_Concurrency_Spring Integration - Fatal编程技术网

Java spring集成中的并发处理

Java spring集成中的并发处理,java,spring,concurrency,spring-integration,Java,Spring,Concurrency,Spring Integration,我正在阅读运行SpringIntegrationCafe示例代码。下面是程序流程 我只是好奇,如果第一批订单中有100种饮料,而在第50种饮料在饮料路由器中处理时,第二批订单中有200种饮料,应用程序是否知道在完全处理第一批订单之前阻止第二批订单?我已经有几年没有使用Spring Integration了,但我认为应用程序是否阻止订单2直到订单1完成取决于您使用的渠道类型。我认为默认情况下它会阻塞,因为示例没有指定通道类型(因此使用DirectChannel)。使用不同类型的通道可以以非阻塞方

我正在阅读运行SpringIntegrationCafe示例代码。下面是程序流程


我只是好奇,如果第一批订单中有100种饮料,而在第50种饮料在饮料路由器中处理时,第二批订单中有200种饮料,应用程序是否知道在完全处理第一批订单之前阻止第二批订单?

我已经有几年没有使用Spring Integration了,但我认为应用程序是否阻止订单2直到订单1完成取决于您使用的渠道类型。我认为默认情况下它会阻塞,因为示例没有指定通道类型(因此使用DirectChannel)。使用不同类型的通道可以以非阻塞方式处理
DrinkOrder
s

除了是最简单的点到点通道选项外,它最重要的特性之一是它允许单个线程在通道的“两侧”执行操作。例如,如果处理程序订阅了DirectChannel,则向该通道发送消息将直接在发送方线程中触发该处理程序的handleMessage(Message)方法调用,然后send()方法调用才能返回


谢谢你的回复。您的意思是说,对于DirectChannel,它在串行模式下工作,但是对于QueueChannel,即添加
标记,它会变成并行模式吗?是我错了还是它真的那么神奇?是的,据我记忆所及,DirectChannel是串行的,而QueueChannel允许并行执行。