当前位置: 首页 > 知识库问答 >
问题:

如何在发布Kafka信息时实现原子性

漆雕欣德
2023-03-14

我有一个场景,我将迭代一组从数据库中获取的记录,在获取后,我将迭代这些记录,并将每个记录推送到Kafka主题。现在让我们假设我已经检索了10条记录,在迭代中我推送了前5条记录,在第6条记录上有一些异常,我想还原推送到主题中的消息。这类似于数据库事务性。我们能在Kafka中实现原子性吗?

谢谢

共有2个答案

郎嘉树
2023-03-14

还原推送到主题中的消息

一旦数据在主题中,它就不能被修改;您需要删除整个主题并从头开始重新开始

秦雅逸
2023-03-14

是的,您可以使用事务;记录将保留在日志中,kafka在日志中放置一个标记来指示事务是提交还是回滚。

消费者必须使用isolation.level=read_committed来避免回滚记录。

https://docs.spring.io/spring-kafka/docs/2.8.4-SNAPSHOT/reference/html/#transactions

https://kafka.apache.org/documentation/#consumerconfigs_isolation.level

 类似资料:
  • 我有一个网页,需要发送Kafka信息到一个主题。网络正在使用vuejs。我尝试使用npm“Kafka节点”和“Kafka”,它们在建立Kafka连接时都有错误。也许它们都是服务器端npm? 是否有任何js软件包支持网页扮演Kafka制作人的角色。我不想设置其他中间服务器(比如kafka http proxy)。我希望网页直接发送信息到主题。可行吗

  • 问题内容: 我们已经编写了一个Java客户端,用于将消息发布到kafka。代码如下所示 当我们执行此代码时,我们得到以下消息和异常 这发生在无限循环中,并且应用程序挂起…当我们检查kafka代理时,发现该主题已创建…但是我们没有收到消息…我们已经坚持了一段时间。 .. 请帮忙 问题答案: 我们终于解决了这个问题…我们在混合环境中运行kafka,如下文所述- https://medium.com/@

  • 我在想,如果我们能以某种方式确保特定的生产者(具有特定的键值属性)在主题t1的特定分区p1中发布其消息,如果我们能确保消费者从相同的分区p1中获取消息。这将有助于我们的目的。 在帮助中,我看到如下内容: 我们可以使用这个选项来控制生成器将写入的分区吗? 同样在高层消费者中,我们能控制它从哪个分区消费吗?如何将分区分配给使用者?

  • 我有一个简单的Kafka消费者微服务应用程序,它使用来自某个主题的消息,同一个应用程序运行在两个不同的池中。 所以,当消息由制作人生成,而我的应用程序尝试使用来自主题的消息时,它只被一个池中的一个人使用。 如何停止从消费者Kafka读取并发消息。我想在两个池中使用相同的消息。 这种情况下可能的解决方案是什么

  • 问题 你有一个基于线程通信的程序,想让它们实现发布/订阅模式的消息通信。 解决方案 要实现发布/订阅的消息通信模式, 你通常要引入一个单独的“交换机”或“网关”对象作为所有消息的中介。 也就是说,不直接将消息从一个任务发送到另一个,而是将其发送给交换机, 然后由交换机将它发送给一个或多个被关联任务。下面是一个非常简单的交换机实现例子: from collections import default

  • 请求地址 https://api.es.xiaojukeji.com/river/Invoice/detail 返回数据格式 JSON 请求方式 GET 是否需要登录 是 关于登录授权,参见 如何登录授权 访问授权限制 暂无 请求参数 名称 类型 必选 描述 client_id string yes 申请应用时分配的AppKey access_token string yes 授权后的access