Я работаю на микросервисах с Redis Streams.
По сути, служба A отправляет задания в службу B с использованием Redis Streams (XADD). Когда служба B получает задание через Redis Streams, эта служба выполняет HTTP-запрос к внешнему API , анализирует результат и XACK-задание. В течение этого времени служба A ожидает данные, поступающие от службы B .
Как правильно отправлять проанализированный результат HTTP-запроса от службы B в службу A, которая ожидает data?
Возможные ответы, о которых я думаю:
- Использовать другие потоки Redis (XREAD или XREADGROUP) в службе A, которая ожидает поступления данных, отправленных из B, но мне нужно предоставить имя потока, куда отправляются данные в сообщение, отправленное из А в Б.
- Используйте другой тип данных Redis, например списки, которые могут использовать запросы на блокировку (BLPOP, BRPOP ...), но как узнать, поступают ли данные в этот список является правильным сообщением? Возможно, мне нужно где-то использовать уникальный идентификатор.
- Использовать pub / sub, но мне не очень нравится это решение, так как нет истории или постоянных данных.
Надеюсь, я было достаточно ясно.