Redis Streams обмен данными между сервисами - PullRequest
0 голосов
/ 15 февраля 2020

Я работаю на микросервисах с 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, но мне не очень нравится это решение, так как нет истории или постоянных данных.

Надеюсь, я было достаточно ясно.

...