【问题标题】:Reactor Kafka with Netty Fully ReactiveReactor Kafka 与 Netty 完全反应式
【发布时间】:2020-03-22 11:57:52
【问题描述】:

我遇到了这个quora帖子,这对我有什么影响?我的完全反应式项目会不会有问题?

https://www.quora.com/Why-do-so-many-developers-dislike-Apache-Kafka

主要的一点是,kafka 消费者在尝试订阅主题时会阻塞,即使他们最初只订阅主题或每当出现断开连接时也是如此。 这可能会导致潜在的大量阻塞调用,这些调用会耗尽有限的线程池。

有人可以阐明一下并提供解决此问题的方法吗?我正在使用 Reactor-kafka 库 ReactiveKafkaConsumerTemplate。

【问题讨论】:

  • 无论您使用哪个更高级别的库,您仍然受到基本 Kafka 协议的限制...
  • 是的,我知道,但是写反应式 kafka 库的人肯定想到了这个问题?

标签: apache-kafka kafka-consumer-api spring-kafka project-reactor reactor-netty


【解决方案1】:

Reactor kafka 将在侧线程上运行任何阻塞代码,以免阻塞不应阻塞的主事件循环(众所周知),并且使用 timeouts 您可以设置 ReceiverOptions这样这些阻塞调用应该不会饿死其他线程。

这是包装 Kafka 消费者的 KafkaReceiver 实现,正如我所见,调度程序在任何地方都用于确保这一点。加上 here's 创建 KafkaConsumer 的地方,它是在可运行的 run() 方法中创建的。

【讨论】:

    猜你喜欢
    • 2019-03-18
    • 1970-01-01
    • 1970-01-01
    • 2019-04-02
    • 1970-01-01
    • 1970-01-01
    • 2020-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多