Spring Cloud Stream教程(四)消費羣體

雖然發佈訂閱模型能夠輕鬆地經過共享主題鏈接應用程序,但經過建立給定應用程序的多個實例來擴展的能力一樣重要。當這樣作時,應用程序的不一樣實例被放置在競爭的消費者關係中,其中只有一個實例預期處理給定消息。html

Spring Cloud Stream經過消費者組的概念來模擬此行爲(Spring Cloud Stream消費者組與Kafka消費者組類似並受到啓發。)每一個消費者綁定可使用spring.cloud.stream.bindings.<channelName>.group屬性來指定組名稱。對於下圖所示的消費者,此屬性將設置爲spring.cloud.stream.bindings.<channelName>.group=hdfsWritespring.cloud.stream.bindings.<channelName>.group=averagespring

SCSt組
圖7. Spring Cloud Stream消費者組

訂閱給定目標的全部組都會收到已發佈數據的副本,但每一個組中只有一個成員從該目的地接收給定的消息。默認狀況下,當未指定組時,Spring Cloud Stream將應用程序分配給與全部其餘消費者組發佈 - 訂閱關係的匿名獨立單個成員消費者組。spa

耐久力

符合Spring Cloud Stream的有意義的應用模式,消費者羣體訂閱是持久的也就是說,綁定實現確保組預訂是持久的,一旦已經建立了一個組的至少一個訂閱,即便組中的全部應用程序都被中止,組也將接收消息。code

注意

匿名訂閱本質上是不耐用的。對於某些binder實現(例如RabbitMQ),能夠具備非持久組的訂閱。htm

一般,當將應用綁定到給定目的地時,最好始終指定消費者組。在擴展Spring Cloud Stream應用程序時,必須爲每一個輸入綁定指定一個使用者組。這樣能夠防止應用程序的實例收到重複的消息(除非須要這種行爲,這是不尋常的)。get

源碼來源源碼

相關文章
相關標籤/搜索