Redis / Кафка — Почему потребители потока заблокированы?

#apache-kafka #redis-streams

Вопрос:

Хорош ли поток Кафка/поток redis для реактивной архитектуры? Я спрашиваю об этом главным образом потому, что и redis, и кафка, похоже, блокируют потоки при отправке сообщений.

Есть ли для этого какие-то причины? Я надеялся, что смогу читать сообщения с некоторым обратным вызовом — поэтому выполняйте, когда сообщение было доставлено как pub/sub в реактивной манере. Не блокируя поток.

Комментарии:

1. Единственная блокировка, которая выполняется, — это ожидание сообщений. Это необязательно для фактической обработки

2. На самом деле рекомендация (насколько мне известно) состоит в том, чтобы обрабатывать сообщения в «другом потоке», если это позволяет ваш бизнес-кейс.. (заказ не требуется и тому подобное…)

Ответ №1:

Клиент Kafka относительно низкого уровня, что «хорошо», как в: он предоставляет вам большую гибкость, когда (и в каком потоке) вы будете выполнять обработку записей. В конце концов, чтобы получить запись, кому-то нужно заблокировать (так как фактическое чтение снова и снова отправляет запросы на извлечение). Независимо от того, является ли блокируемый поток «основным бизнес-потоком» или каким-либо выделенным для параллельного ввода-вывода, будет зависеть от выбора разработчика.

Вы можете взглянуть на предложения более высокого уровня, такие как Spring-Kafka или API-интерфейсы Kafka Stream / Kafka Connect, которые предоставляют «более толстые» контейнеры с инверсией контроля, эффективно отвечая на вышеуказанную проблему.