W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
您可以通過(guò)設(shè)置其partitionKeyExpression
或partitionKeyExtractorName
屬性及其partitionCount
屬性中的一個(gè)或僅一個(gè),來(lái)配置輸出綁定以發(fā)送分區(qū)數(shù)據(jù)。
例如,以下是有效的典型配置:
spring.cloud.stream.bindings.output.producer.partitionKeyExpression=payload.id spring.cloud.stream.bindings.output.producer.partitionCount=5
基于該示例配置,通過(guò)使用以下邏輯將數(shù)據(jù)發(fā)送到目標(biāo)分區(qū)。
根據(jù)partitionKeyExpression
為發(fā)送到分區(qū)輸出通道的每條消息計(jì)算分區(qū)鍵的值。partitionKeyExpression
是一個(gè)SpEL表達(dá)式,該表達(dá)式根據(jù)出站消息進(jìn)行評(píng)估以提取分區(qū)鍵。
如果SpEL表達(dá)式不足以滿足您的需要,則可以通過(guò)提供org.springframework.cloud.stream.binder.PartitionKeyExtractorStrategy
的實(shí)現(xiàn)并將其配置為bean(通過(guò)使用@Bean
注釋)來(lái)計(jì)算分區(qū)鍵值。 。如果在應(yīng)用程序上下文中有多個(gè)org.springframework.cloud.stream.binder.PartitionKeyExtractorStrategy
類型的bean,則可以通過(guò)使用partitionKeyExtractorName
屬性指定其名稱來(lái)進(jìn)一步過(guò)濾它,如以下示例所示:
--spring.cloud.stream.bindings.output.producer.partitionKeyExtractorName=customPartitionKeyExtractor --spring.cloud.stream.bindings.output.producer.partitionCount=5 . . . @Bean public CustomPartitionKeyExtractorClass customPartitionKeyExtractor() { return new CustomPartitionKeyExtractorClass(); }
在Spring Cloud Stream的早期版本中,您可以通過(guò)設(shè)置
spring.cloud.stream.bindings.output.producer.partitionKeyExtractorClass
屬性來(lái)指定org.springframework.cloud.stream.binder.PartitionKeyExtractorStrategy
的實(shí)現(xiàn)。從2.0版開(kāi)始,不推薦使用此屬性,并且在將來(lái)的版本中將不再支持該屬性。
一旦計(jì)算出消息密鑰,分區(qū)選擇過(guò)程就會(huì)將目標(biāo)分區(qū)確定為0
與partitionCount - 1
之間的值。適用于大多數(shù)情況的默認(rèn)計(jì)算基于以下公式:key.hashCode() % partitionCount
。這可以在綁定上進(jìn)行自定義,方法是將SpEL表達(dá)式設(shè)置為針對(duì)'key'進(jìn)行評(píng)估(通過(guò)partitionSelectorExpression
屬性),也可以將org.springframework.cloud.stream.binder.PartitionSelectorStrategy
的實(shí)現(xiàn)配置為bean (通過(guò)使用@ Bean批注)。與PartitionKeyExtractorStrategy
類似,當(dāng)應(yīng)用程序上下文中有多個(gè)這種類型的bean可用時(shí),您可以使用spring.cloud.stream.bindings.output.producer.partitionSelectorName
屬性進(jìn)一步過(guò)濾它,如以下示例所示:
--spring.cloud.stream.bindings.output.producer.partitionSelectorName=customPartitionSelector . . . @Bean public CustomPartitionSelectorClass customPartitionSelector() { return new CustomPartitionSelectorClass(); }
在Spring Cloud Stream的早期版本中,您可以通過(guò)設(shè)置spring.cloud.stream.bindings.output.producer.partitionSelectorClass
屬性來(lái)指定org.springframework.cloud.stream.binder.PartitionSelectorStrategy
的實(shí)現(xiàn)。從2.0版開(kāi)始,不推薦使用此屬性,并且在將來(lái)的版本中將不再支持該屬性。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: