当前位置: 首页 > 知识库问答 >
问题:

kafka消息的节俭序列化-每个结构单主题

方承弼
2023-03-14

我计划使用kafka作为事件来源的持久日志,目前正在研究不同的序列化选项。我目前的重点是使用thrift对我将存储在Kafka中的消息进行序列化和反序列化。

共有1个答案

商骞仕
2023-03-14

节俭结构不携带任何结构类型的指示符(至少在缺省二进制协议中没有)。因此,要反序列化节俭数据树,您需要知道根结构的类型。因此,每个主题一个结构类型的想法是明智的。

不过,在这种情况下,有一件事可能很有用,那就是一个节俭联盟...您可以定义一个单一的联合,其中包含您希望能够在主题上发布的所有不同类型的字段,使用者只需序列化联合类型并确定设置了哪个字段。这种方法的开销很小,因为节俭联合是为这个用例优化的。

 类似资料:
  • 我使用Kafka Consumer API来构建Consumer。为了构建反序列化器,我实现了Deserializer类并提供了必要的实现。我收到此错误“Exception Raisedorg.apache.kafka.Common.Errors.SerializationException:错误反序列化分区staging.DataFeeds.PartnerHotel-0的键/值,偏移量为1920

  • 假设我有一个名为的Kafka主题,它有几个消息类型(每个消息类型都有不同的Avro模式),如、等等。我想了解一下用Spring Cloud Stream发布/接收相同主题的不同类型是否可行(而且有意义)。特别是,拥有几个将非常有用,每个专用于特定类型。根据这篇博文,当需要订购消息时,这是非常有用的,因为它们与同一个实体相关。这种情况下的配置示例是什么?

  • 我正在开发一个使用的软件。我有一个用户订阅了多个主题,我想知道是否有一个订单接收来自这些主题的消息。我在我的电脑上尝试了一些组合,但我需要确定这一点。例 null [编辑]我想指定这两个主题各有一个分区,并且只有一个生产者和一个消费者。我需要首先阅读来自第一个主题的所有消息,然后阅读来自另一个主题的消息

  • 我不能在使用C Glib序列化的Java节俭对象中反序列化。我的序列化代码如下(我在这里提出问题后提出的解决方案): 发送和接收的消息长度相同。但不知何故,在Java端,我不能复制对象。 可能有人面临过类似的问题? UPD: null 在发送到Kafka之前,对相同的tbuffer->buf连续进行了两次十六进制转储。看起来缓冲区在发送前包含错误的数据:

  • 我试图阅读和打印从Kafka使用Apache Flink的原型消息。 我遵循官方文件,但没有成功:https://nightlies.apache.org/flink/flink-docs-master/docs/dev/datastream/fault-tolerance/serialization/third_party_serializers/ Flink消费者代码是: 反序列化器代码是: