Spring Cloud Stream发送到Kafka错误控制处理

时间:2016-11-05 16:45:28

标签: java apache-kafka spring-cloud-stream

如何捕获写入Kafka主题的错误?

import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.cloud.stream.annotation.StreamListener;
import org.springframework.cloud.stream.messaging.Processor;
import org.springframework.messaging.Message;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.stereotype.Component;

import javax.xml.bind.JAXBException;

@Component
@EnableBinding(Processor.class)
public class Parser {

    @StreamListener(Processor.INPUT)
    @SendTo(Processor.OUTPUT)
    public String process(Message<?> input) {

        // do smth

        // how to catch an error if sending message to 'output' topic fails
    }

}

将生产者切换到同步模式。

spring.cloud.stream.kafka.bindings.output.producer.sync=true

下一步是什么?任何例子?扩展一些绑定impl,添加一些AOP魔法?

1 个答案:

答案 0 :(得分:0)

我认为您需要注册一个KafkaProducerListener来处理您的案例中的错误场景,并使其在您的应用程序中作为bean使用。

有关KafkaProducerListener的更多信息,请here

另请注意,通常会在errorChannel上使用频道名称error提供失败的消息。为错误通道配置destination名称后,将发布所有错误消息:spring.cloud.stream.bindings.error.destination