簡體   English   中英

SI 發布-訂閱通道 - 並行還是順序執行?

[英]SI Publish-subscribe channel - parallel or sequential execution?

我創建了一個發布訂閱頻道,例如

@Bean
MessageChannel parallelRunningSubscribableChannel() {
    return MessageChannels.publishSubscribe("parallelRunningSubscribableChannel").get();
}

我的主要流程以該渠道結束,其他 2 個流程以該渠道開始:

@Bean
public IntegrationFlow mainFlow() {
    return IntegrationFlows
            .from(...)
            ...
            .channel(parallelRunningSubscribableChannel)
            .get();
}

@Bean
public IntegrationFlow subFlow1() {
    return flow -> flow.channel(parallelRunningSubscribableChannel())
            .handle(...)
            ...
}

@Bean
public IntegrationFlow subFlow2() {
    return flow -> flow.channel(parallelRunningSubscribableChannel())
            .handle(...)
            ...
}

我假設 subFlow1 和 subFlow2 順序運行(例如,首先運行 subFlow1,然后運行 subflow2),對嗎?
我需要知道是否創建了一個新線程,因為我希望 2 個子流在同一個數據庫事務中運行。

只是出於好奇,我怎樣才能讓 2 個子流並行運行?

謝謝!

問候,
五。

PublishSubscribeChannel默認不是並發的。 請參閱文檔: https://docs.spring.io/spring-integration/docs/current/reference/html/core.html#channel-implementations-publishsubscribechannel

要使這些訂閱者在他們自己的線程中並行工作,您需要為此通道顯式配置一個TaskExecutor

我希望 2 個子流在同一個數據庫事務中運行。

如果你讓它們並行,它們將在自己的線程中工作,因此它們不能參與同一個 TX。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM