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

反应型Kafka制作人

秦弘亮
2023-03-14

我正在探索反应性Kafka,只是想确认反应性Kafka是否等同于同步制作人。与同步生产者,我们得到消息传递保证与确认字符和生产者序列保持。但是,ASYNC不能保证交付和测序。反应式生产者等同于SYNC还是ASYNC?

共有1个答案

胡弘毅
2023-03-14

被动意味着异步。在普通Kafka客户端API中,KafkaProducer也是异步的。当您显式调用kafkaProducer时,它将变得同步。send()。get(),它会阻止程序的执行。

即使使用异步生产者,消息传递也是有保证的。它取决于重试次数和delivery.timeout.ms

使用ack=all,可以确保数据在ISR之间复制,并且可以通过一致性保证获得容错,以防其中一个代理死亡,消费者可以看到想要看到的内容。

至于顺序,消息在发送之前是批处理的。如果多个批次被异步地发送,如批次-1、批次-2、批次-3,并且如果批次-1在批次-2和批次-3被发送后由于某种原因失败,那么重置批次-1将在批次-2、批次-3后产生批次-1,从而使其脱离序列。

如果需要序列,则需要确保max.in。航班请求。每将连接设置为1,以便每个生产者在任何给定时刻只能发出一个请求。但是,这可能会对性能产生影响。您可能需要调整其他设置,如batch。size例如,增加它,以便在机上请求设置为1时获得更高的吞吐量。

因此,您认为异步不能保证交付和排序的假设是错误的。

 类似资料:
  • 我想使用spring cloud stream framework创建一个kafkaendpoint,它将有一个http post api到。如何动态更改属性 我可以使用实现来实现上述功能,但不知道是否有可能在Spring中开发此功能。

  • 请参阅下面的代码: \n不在这方面工作

  • 我正在考虑创建一个独立的Kafka生产者,它作为守护进程运行,通过套接字接收消息,并将其可靠地发送给Kafka。 但是,我决不能是第一个想到这个想法的人。这样做的目的是避免使用PHP或Node编写Kafka生成器,而只是通过套接字将消息从这些语言传递到独立的守护进程,这些语言负责传递,而主应用程序则一直在做自己的事情。 此守护进程应负责在发生中断时进行重试传递,并充当服务器上运行的所有程序的传递点

  • 我想让我的Kafka制作人变得富有交易性。我正在发送10条消息。如果发生任何错误,则不应向Kafka发送任何消息,即无或全部。 我使用的是Spring Boot KafkaTemplate。 我正在发送文件中提到的10条信息,如下所示。应发送9条消息,且I消息大小超过1MB,由于 https://docs.spring.io/spring-kafka/reference/html/#using-K

  • 给定这样一个类 如何实现可以处理嵌套泛型类型的自定义Kafka反序列化器? 附注:我正在使用jackson进行序列化/反序列化。