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

如何在SpringKafka上创建自定义解串器?

狄英哲
2023-03-14

我已经创建了一个消费者来接收来自Kafka主题的消息,但是我正在手动解析消息,有没有一种方法可以使用自定义的反序列化器来自动解析这个主题消费者?

// I've tried to replace the second "String" with "MyMessage" but it didn't work
// e.g: onMessage(message: ConsumerRecord<String, MyMessage>)
fun onMessage(message: ConsumerRecord<String, String>) {
    val myMessage = try {
        jacksonObjectMapper.readValue<MyMessage>(message.value())
    } catch (ex: Exception) {
        logger.error(ex.message)
        null
    }

    myMessage?.let{ // do stuff }
}

预期结果是:

fun onMessage(message: ConsumerRecord<String, MyMessage>) {
    // do something with message.value() parameter that will be for sure a MyMessage instance.
}

如果出现解析错误,我可以设置回调来处理此错误吗?

共有1个答案

拓拔君博
2023-03-14

对只需实现您自己的并将其添加到消费者配置值中。反序列化器

https://kafka.apache.org/documentation/#consumerconfigs_value.deserializer

如果您使用Spring Boot:

https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#application-属性.集成.Spring.kafka.耗电元件.值分解器

如果这样配置,它不受Spring管理;如果希望Spring管理它,可以通过构造函数或setter将它添加到< code > DefaultKafkaProducerFactory 中。

Spring for Apache Kafka提供了一个JSON反序列化程序:

https://docs.spring.io/spring-kafka/docs/current/reference/html/#json-serde

 类似资料:
  • 问题内容: 想象以下情况: 我想为Foo写一个定制的Jackson解串器。为了做到这一点(例如,为了反序列化类,它具有属性),我需要知道的具体类型,在使用,在反序列化时间(比如我需要知道是在particluar情况下)。 一个人怎么写这样的反序列化器?因为杰克逊使用类型化的集合和地图来做到这一点,所以应该有可能做到这一点。 说明: 似乎有两个部分可以解决问题: 1)获取内部声明的属性类型并使用其反

  • 我按照这个链接中列出的步骤来创建一个客户反序列化器。我从Kafka收到的消息在json字符串前有纯文本“log message -”。我希望反序列化程序忽略这个字符串并解析json数据。有办法做到吗? 应用 消费者配置

  • 问题内容: 我正在http://www.cafeaulait.org/javafaq.html上阅读#6.10项,然后我开始怀疑大型企业如何创建自己的JVM实现。一个人会尝试(或可行)实验性的东西吗? 问题答案: 从技术上讲,创建该新JVM所需的所有信息都是该语言和目标平台的公共规范。即使字节码解释在很大程度上相同,JVM还是需要根据其是要在台式机还是手机上运行而有所不同。 一些开始寻找信息的地方

  • Youtrack上有几种类型,如OwnedField[1]、Group[1]等。 是否可以创建一个自定义类型,该类型具有自定义字段,如ownedField具有链接到用户的自定义字段? 我们希望将类似的行为应用于ownedField,其中,当您选择一个子系统字段(类型为ownedField)时,它会“自动”用与该子系统关联的用户填充问题的字段“受理人”。

  • 问题内容: 我正在尝试在Log4j2中编写自己的RewritePolicy。该文档指出: RewritePolicy是一个接口,允许实现在将LogEvent传递给Appender之前检查并可能对其进行修改。RewritePolicy声明一个必须执行的名为rewrite的方法。该方法通过LogEvent传递,并且可以返回相同事件或创建一个新事件。 这是我的 java类 : 这是我的 yaml配置 文

  • 本文向大家介绍Android如何创建自定义ActionBar,包括了Android如何创建自定义ActionBar的使用技巧和注意事项,需要的朋友参考一下 当多个界面都有很多相似部分时,可以考虑创建一个功能较全的模板。而在需要时,可以通过引用模板来实现自己想要实现的功能。比如适配器 Adapter,当很多的适配器都差不多时,就可以通过打造一个通用的适配器来实现。本例中主要是如何创建自定义的 Act