SpringCloud Avro Schema注冊客戶端消息轉(zhuǎn)換器

2023-11-27 13:50 更新

對于已在應(yīng)用程序上下文中注冊了SchemaRegistryClient bean的應(yīng)用程序,Spring Cloud Stream自動為架構(gòu)管理配置Apache Avro消息轉(zhuǎn)換器。由于接收消息的應(yīng)用程序可以輕松訪問可以與自己的讀取器模式進(jìn)行協(xié)調(diào)的寫入器模式,因此這簡化了模式的演變。

對于出站消息,如果通道的內(nèi)容類型設(shè)置為application/*+avro,則激活MessageConverter,如下例所示:

spring.cloud.stream.bindings.output.contentType=application/*+avro

在出站轉(zhuǎn)換期間,消息轉(zhuǎn)換器嘗試使用SchemaRegistryClient推斷每個出站消息的模式(基于其類型)并將其注冊到主題(基于有效負(fù)載類型)。如果已經(jīng)找到相同的模式,則將檢索對其的引用。如果不是,則注冊架構(gòu),并提供新的版本號。通過使用以下方案,將消息與contentType頭一起發(fā)送:application/[prefix].[subject].v[version]+avro,其中prefix是可配置的,而subject是從有效負(fù)載類型推導(dǎo)出來的。

例如,類型為User的消息可能作為二進(jìn)制有效載荷發(fā)送,其內(nèi)容類型為application/vnd.user.v2+avro,其中user是主題,2是版本號。

接收消息時,轉(zhuǎn)換器從傳入消息的標(biāo)頭中推斷模式引用,并嘗試檢索它。該模式在反序列化過程中用作編寫器模式。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號