34.11. Kafka 标头传播
使用 Kafka 中的消息时,标头将自动传播到 camel 交换标头。生成由同一行为 - 特定交换的 camel 标头支持的流将被传播到 kafka 消息标头。
由于 kafka 标头只允许 byte[]
值,以便 camel Exchange 标头被序列化为 bytes[]
,否则将跳过标头。支持以下标头值类型:string ,Integer
,Long
, Double,
布尔值
,byte[]
. 注: 所有标头生成的 从 kafka 到 camel 的交换默认都会包括值
byte[]
。若要覆盖默认功能,uri 参数可以设置: headerDeserializer
用于 from
路由,headerSerializer
用于 to
路由。Example:
from("kafka:my_topic?headerDeserializer=#myDeserializer") ... .to("kafka:my_topic?headerSerializer=#mySerializer")
默认情况下,所有标头都由 KafkaHeaderFilterStrategy
进行过滤。策略过滤掉以 Camel
或 org.apache.camel
前缀开头的标头。默认的策略可以通过在 to
和 from
路由中使用 headerFilterStrategy
uri 参数进行覆盖:
from("kafka:my_topic?headerFilterStrategy=#myStrategy") ... .to("kafka:my_topic?headerFilterStrategy=#myStrategy")
myStrategy
对象应该是 HeaderFilterStrategy
的子类,必须手动放置在 Camel registry 中,也可以作为 bean 在 Spring/Blueprint 中进行注册,因为它为 CamelContext
感知。