Quarkus Kafka死信队列反序列化异常

时间:2020-11-12 18:11:50

标签: error-handling apache-kafka deserialization quarkus smallrye

为了满足我的服务的可靠性,我需要使用kafka-smallryequarkus将所有无法反序列化的传入消息放入死信主题。

有关该主题的所有消息都应采用avro格式(但我不确定),并在schema-registry上定义了schema。

我以这种方式设置了使用者的配置:

mp:
  messaging:
    incoming:
      test-in:
        connector: smallrye-kafka
        group:
          id: test-in-consumer-group
        topic: events-topic
        failure-strategy: dead-letter-queue
        schema:
          registry:
            url: http://localhost:8081
        value:
          deserializer: io.confluent.kafka.serializers.KafkaAvroDeserializer
          subject:
            name:
              strategy: io.confluent.kafka.serializers.subject.TopicRecordNameStrategy
        key:
          deserializer: io.confluent.kafka.serializers.KafkaAvroDeserializer
          subject:
            name:
              strategy: io.confluent.kafka.serializers.subject.TopicRecordNameStrategy
        specific:
          avro:
            reader: true

我的消费者代码:

@ApplicationScoped
public class Consumer {

    @Incoming("test-in")
    public CompletionStage<Void> store(KafkaRecord<Key,SpecificRecord> data ){
            String schemaFullName = data.getPayload().getSchema().getFullName();
            System.out.println(schemaFullName);

            // other consumer code
            return data.ack();
    }
}

当使用者无法反序列化消息时,将阻止使用过程,而是将消息移至无效字母并继续。我想反序列化错误不会产生nack,因此消息无法移到死信中。

有一种方法可以将无法反序列化的消息移至死信主题?

0 个答案:

没有答案