簡體   English   中英

帶有 GCP pubsub 的 Spring Cloud Stream 使用者的並發設置

[英]Concurrency settings for Spring Cloud Stream consumer with GCP pubsub

我的應用程序正在使用綁定到 GCP pubsub 的 Spring Cloud Stream 接收消息。 我正在試驗以下配置參數:

spring.cloud.gcp.pubsub.subscriber.executor-threads
spring.cloud.stream.bindings.<channelName>.consumer.concurrency

該應用程序有 3 個不同的通道,每個通道都定義了一個消費者組。 應用程序的多個實例將在生產中運行(在 kubernetes 上)。

我正在嘗試找到正確的設置進行配置,以確定在每個應用程序實例中可以並行處理多少消息。 我一直在我的本地機器上嘗試調整上述兩個參數,但似乎只有 executor-threads 有任何影響。 如果我將其設置為 5,並將一堆消息泵入系統,我會在消息處理日志中看到 5 個線程。 如果我將它提高到 10,我會在那里看到 10 個線程。 然而,並發參數似乎沒有任何作用,無論它是設置為 1 還是 10 或其他什么。

如果有的話,這些參數之間的關系是什么? 並發參數是否僅用於 Rabbit 或 Kafka 等其他綁定器?

謝謝。

spring.cloud.gcp.pubsub.subscriber.executor-threads
spring.cloud.gcp.pubsub.subscriber.parallel-pull-count

Spring Cloud GCP中的這兩個配置選項與 Pub/Sub 的Java 客戶端庫中的setExecutorThreadCountsetParallelPullCount相同。 它們控制您的Pub/Sub訂閱者客戶端的行為。

parallel-pull-count確定您的訂閱者客戶端打開多少個流來接收消息,而executor-threads確定您的訂閱者客戶端使用多少個線程來處理消息回調(消息被確認,以便 Pub/Sub 服務不會再次將它們發送給您)。 例如,當您將parallel-pull-count為 2 並將executor-threads為 4 時,消息將通過 2 個流進入,並且 8 個線程將忙於處理它們。 有關更多信息,請參閱 並發控制

spring.cloud.stream.bindings.<channelName>.consumer.concurrency

您是對的,此配置選項僅適用於某些活頁夾。 為了在您的消費者組中設置並發性,您的生產者必須進行分區。 但是,Spring Cloud Stream binder to Pub/Sub 目前不支持分區,因此您將無法設置並發。

我正在嘗試找到正確的設置進行配置,以確定在每個應用程序實例中可以並行處理多少消息。

為了實現最大吞吐量,我將使用上面的前兩個配置選項,同時還要記住,處理時間超過確認截止日期的消息將過期,並且 Pub/Sub 服務將重新傳遞它們。

暫無
暫無

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

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