Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Error handling Kafka错误处理:Processor.output().send(message,kafkatimeoutims)始终返回true及其异步_Error Handling_Apache Kafka_Messaging_Spring Cloud Stream - Fatal编程技术网

Error handling Kafka错误处理:Processor.output().send(message,kafkatimeoutims)始终返回true及其异步

Error handling Kafka错误处理:Processor.output().send(message,kafkatimeoutims)始终返回true及其异步,error-handling,apache-kafka,messaging,spring-cloud-stream,Error Handling,Apache Kafka,Messaging,Spring Cloud Stream,可能这个问题已经报告并解决了。我没有找到解决方案,也没有任何关于这个问题的公开问题,所以创建一个新的。 我试图处理将数据发布到kafka topic时出现的错误。 有了卡夫卡春天的蒸汽,我们用这个 if (processor.output().send(messsage , kafkaTimeoutInMS) && acknowledgment != null) { LOGGER.debug("Acknowl

可能这个问题已经报告并解决了。我没有找到解决方案,也没有任何关于这个问题的公开问题,所以创建一个新的。 我试图处理将数据发布到kafka topic时出现的错误。 有了卡夫卡春天的蒸汽,我们用这个

if (processor.output().send(messsage , kafkaTimeoutInMS) && acknowledgment != null)
                {
                    LOGGER.debug("Acknowledgment provided");
                    LOGGER.info("Sending to Kafka successful");
                    acknowledgment.acknowledge();
                }
                else
                {
                    LOGGER.error("Sending to Kafka failed", message);
                }
Send()方法始终返回true,我在调试模式下运行时尝试停止kafka manual,但它仍然返回true。我已经读到它是异步的

我试着设置

bindings: output: producer: sync: true
这没用。 但是我看到了一些错误,我不能用我的逻辑来判断是失败还是成功

我们正在手动确认,因此我们只应在其成功发送到主题时确认,并且我们需要记录所有失败的消息。
有什么建议吗?

我相信你误解了spring cloud stream的工作原理。 作为一个框架,用户和框架之间有一定的契约,当涉及到消息传递时,ACK、重试、DLQ和许多其他方面都会自动处理,以确保用户不必手动暴露于此(正如您正在尝试的那样)

考虑花一点时间阅读用户指南-

此外,下面是一个非常基本的示例,它将演示用户(开发人员)与框架的典型交互。如您所见,您所做的只是实现一个简单的处理程序,它接收并返回一段数据。其余部分(从卡夫卡实际接收并发送到卡夫卡或任何其他消息传递系统)由框架提供的绑定器处理

@SpringBootApplication
@EnableBinding(Processor.class)
public class ProcessorApplication { 

    public static void main(String[] args) {
        SpringApplication.run(ProcessorApplication.class);
    }


    @StreamListener(Processor.INPUT)
    @SendTo(Processor.OUTPUT)
    public String echo(String message) {
        return message;
    }
}