Redis / Kafka - 为什么流消费者被阻塞?

问题描述

Kafka 流/redis 流是否适合反应式架构? 我问这个主要是因为 redis 和 kafka 在消费消息时似乎都在阻塞线程。

这背后有什么原因吗?我希望我可以通过一些回调读取消息 - 所以当消息以响应方式像 pub/sub 一样被传递时执行。不是通过阻塞线程。

解决方法

Kafka 客户端的级别相对较低,什么是“好”,例如:它为您何时(以及在哪个线程中)进行记录处理提供了很大的灵活性。最后,要接收记录,需要有人阻止(因为实际读取是一遍又一遍地发送获取请求)。被阻塞的线程是“主业务”线程还是某个 side-i/o 专用线程将取决于开发者的选择。

您可以查看更高级别的产品,例如 Spring-Kafka 或 Kafka Stream API / Kafka Connect 框架,它们提供“更胖”的控制反转容器,有效地回答了上述问题。