首页 > 解决方案 > 断言 Kafka 发送工作

问题描述

我正在用 Spring Boot 编写一个应用程序,所以要写信给 Kafka,我会这样做:

@Autowired
private KafkaTemplate<String, String> kafkaTemplate;

然后在我的方法中:

kafkaTemplate.send(topic, data)

但我觉得我只是依靠这个来工作,我怎么知道这是否有效?如果它是异步的,返回 200 代码并希望它确实有效是一个好习惯吗?我很困惑。如果 Kafka 不可用,这不会失败吗?不应该提示我捕获异常吗?

标签: javaspringspring-bootapache-kafka

解决方案


除了@mjuarez 提到的内容之外,您还可以尝试使用两个 Kafka 生产者属性。一个是,它允许您设置您认为对您的用例安全ProducerConfig.ACKS_CONFIG的确认级别。这个旋钮有三个可能的值。来自卡夫卡文档

  • acks=0: Producer 不关心来自服务器的确认,并将其视为已发送。
  • acks=1:这意味着领导者会将记录写入其本地日志,但会在不等待所有追随者的完全确认的情况下做出响应。
  • acks=all:这意味着领导者将等待完整的同步副本集来确认记录。

另一个属性是ProducerConfig.RETRIES_CONFIG。设置大于零的值将导致客户端重新发送发送失败并可能出现暂时性错误的任何记录。


推荐阅读