SpringCloud 入站反序列化

2023-11-29 15:29 更新

類似的規(guī)則適用于入站數(shù)據(jù)反序列化。

如果禁用本機(jī)解碼(這是默認(rèn)設(shè)置),則框架將使用用戶設(shè)置的contentType轉(zhuǎn)換消息(否則,將應(yīng)用默認(rèn)的application/json)。在這種情況下,它將針對(duì)入站反序列化而忽略入站上設(shè)置的任何SerDe。

這是在入站上設(shè)置contentType的屬性。

spring.cloud.stream.bindings.input.contentType: application/json

這是啟用本機(jī)解碼的屬性。

spring.cloud.stream.bindings.input.nativeDecoding: true

如果在輸入綁定上啟用了本機(jī)解碼(用戶必須如上所述明確啟用它),則框架將跳過對(duì)入站進(jìn)行的任何消息轉(zhuǎn)換。在這種情況下,它將切換到用戶設(shè)置的SerDe。將使用在實(shí)際輸出綁定上設(shè)置的valueSerde屬性。這是一個(gè)例子。

spring.cloud.stream.kafka.streams.bindings.input.consumer.valueSerde: org.apache.kafka.common.serialization.Serdes$StringSerde

如果未設(shè)置此屬性,它將使用默認(rèn)的SerDe:spring.cloud.stream.kafka.streams.binder.configuration.default.value.serde

值得一提的是,Kafka Streams綁定程序不會(huì)反序列化入站的密鑰-它僅依賴于Kafka本身。因此,您必須在綁定上指定keySerde屬性,否則它將默認(rèn)為應(yīng)用程序范圍的公用keySerde。

綁定級(jí)別密鑰serde:

spring.cloud.stream.kafka.streams.bindings.input.consumer.keySerde

公用密鑰序列:

spring.cloud.stream.kafka.streams.binder.configuration.default.key.serde

與在出站上進(jìn)行KStream分支的情況一樣,為每個(gè)綁定設(shè)置值SerDe的好處是,如果您有多個(gè)輸入綁定(多個(gè)KStreams對(duì)象),并且它們都需要單獨(dú)的值SerDe,則可以分別配置它們。如果使用通用配置方法,則此功能將不適用。

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)