Шаблон обмена сообщениями в очереди REST - PullRequest
0 голосов
/ 03 августа 2020

Я создаю приложение с микросервисом, которое для целей этого вопроса состоит из 3 частей: «загрузчик», который будет принимать сообщение от другой службы и POST-сообщения в очередь сообщений RESTful, сама очередь сообщений и рабочая служба, которая будет ПОЛУЧАТЬ сообщения от службы и обрабатывать сообщения.

В большинстве очередей, с которыми я работал, вы обычно имеете открытое соединение между очередью и службой worker. Ограничение этой текущей проблемы заключается в том, что очередь доступна только через RESTful API. Мне интересно, какой шаблон лучше всего настроить для рабочего сервиса? У меня есть несколько идей, но я был бы признателен за некоторую критику за каждый подход.

  1. Настройте cron, который будет опрашивать очередь сообщений каждые x секунд.

Плюсы: из этих решений кажется наиболее надежным - всегда получать следующее сообщение, даже если в предыдущем задании есть ошибка.

Минус: дает возможность для длительных заданий, которые две работы выполняются (одним и тем же работником) одновременно, что в первую очередь сводит на нет назначение очереди

Настройка какой-то рекурсивной функции, которая после завершения обработки текущего задания go проверяет наличие другого сообщения, если сообщений нет, проверяет другое сообщение через x секунд, если есть сообщение, работает job.

Pro: устраняет недостаток решения №1

Con: если возникает какая-либо непредвиденная ошибка, она может нарушить рекурсивную функцию, что приведет к сбою службы.

Любые комментарии или лучшие решения приветствуются. Также следует упомянуть, что «рабочий» сервис - это сервис node.js / express.

...