我們有以下Spring的集成流程:與Spring集成並行富集 - 初始線程失去
JMS消息驅動通道適配器 - > - >的pub/sub通道 - > 3倍 濃縮商簽約 - >聚合器 - > ...
每個富集器都有指定的task-scheduler
,所以它們並行工作。
不幸的是,這種方法無法正常工作,因爲原來的JMS線程丟失了。
我預計jms-message-driver-channel-adapter
和aggregator
運行在相同的線程,但aggregator
(和以下處理程序)在「最後」豐富的線程中運行。
我該如何做到這一點?我不認爲這寫在spring-int
文檔中的任何地方。
添加後加裏的答覆
我決定在更自然的方式來實現這一點:
<int:service-activator method="enrich" input-channel="in" output-channel="out">
<bean class="com.xxx.ParallelEnricher" p:timeoutMs="10000">
<constructor-arg ref="taskExecutor" />
<constructor-arg>
<list>
<bean class="com.xxx.Enricher1" />
<bean class="com.xxx.Enricher2" />
<bean class="com.xxx.Enricher3" />
</list>
</constructor-arg>
</bean>
</int:service-activator>
凡ParallelEnricher是一個可重用的類稱爲「未來taskExecutor.submit(Runnable接口)」每個豐富和處理超時。 可能是我失去了一些東西,但它會很高興在同一個消息是這樣配置的並行操作:
<int:service-activator method="enrich" input-channel="in" output-channel="out"
timeout="10000" task-executor="taskExecutor">
<list>
<bean class="com.xxx.Enricher1" />
<bean class="com.xxx.Enricher2" />
<bean class="com.xxx.Enricher3" />
</list>
</int:service-activator>
嗨加里。感謝您的描述可能的解決方案。我懷疑沒有直接的方法來做到這一點。老實說,我不即使像這個pub/sub channel和aggregator都存在於這個流程中,當我們手動執行這樣的任務(沒有spring-int)時,我們只有:線程池執行程序,調用者線程中的期望和等待邏輯。 XML配置過於複雜且難以理解,我決定以更自然的方式實現這一點(將更新原始帖子的細節) – JavaD 2014-12-12 12:37:45