java - 断言 Kafka 发送工作
问题描述
我正在用 Spring Boot 编写一个应用程序,所以要写信给 Kafka,我会这样做:
@Autowired
private KafkaTemplate<String, String> kafkaTemplate;
然后在我的方法中:
kafkaTemplate.send(topic, data)
但我觉得我只是依靠这个来工作,我怎么知道这是否有效?如果它是异步的,返回 200 代码并希望它确实有效是一个好习惯吗?我很困惑。如果 Kafka 不可用,这不会失败吗?不应该提示我捕获异常吗?
解决方案
除了@mjuarez 提到的内容之外,您还可以尝试使用两个 Kafka 生产者属性。一个是,它允许您设置您认为对您的用例安全ProducerConfig.ACKS_CONFIG
的确认级别。这个旋钮有三个可能的值。来自卡夫卡文档
acks=0
: Producer 不关心来自服务器的确认,并将其视为已发送。acks=1
:这意味着领导者会将记录写入其本地日志,但会在不等待所有追随者的完全确认的情况下做出响应。acks=all
:这意味着领导者将等待完整的同步副本集来确认记录。
另一个属性是ProducerConfig.RETRIES_CONFIG
。设置大于零的值将导致客户端重新发送发送失败并可能出现暂时性错误的任何记录。
推荐阅读
- javascript - 双击子菜单设备
- node.js - 如何使用节点js迭代txt文件中的json数据?
- reactjs - 对于这种情况,有没有办法在不映射的情况下分离这个 JSON 数据?
- c# - 如何通过 api 从 Azure DevOps TFVC “获取最新版本”
- python - 如何使用 pathlib.Path.expanduser() 并修改和使用 PosixPath 值?
- javascript - 在 href 中动态传递文件 url
- javascript - 从公共文件中调用 angular Observable.subscribe()
- php - 为什么在提交时我的表单上有 CSRF Token 错误?
- java - 处理多个类型视图单击 RecyclerView
- reactjs - 从列表中选择项目时如何显示内容