Зависимость от работы в RabbitMQ - PullRequest
3 голосов
/ 07 февраля 2012

Я пытаюсь выяснить, как лучше настроить следующий сценарий:

  1. В очередь добавлено несколько заданий типа A
  2. Когда все задания типа A завершены, потребуется задание типа B или C (по одному на задание типа A)
  3. Когда все задания типа A, B и C завершены, потребуется окончательное задание типа D

Таким образом, в основном у нас есть некоторые зависимости от заданий в очереди, так что мы не хотим запускать задания, требующие выполнения других заданий. Существует ли руководство по настройке такой системы? Должны ли задания типа A добавлять задания типа B или C после завершения их работы? Должны ли все рабочие места быть добавлены заранее и как-то сказать рабочим не тянуть их, пока они не будут готовы?

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

1 Ответ

3 голосов
/ 08 февраля 2012

Мне интересно, может ли здесь вас вдохновить шаблон маршрутизации , т. Е. Отправить в исходных сообщениях A "промах", определяющий, какими должны быть следующие сообщения (B, C) (какие правилаприменить, чтобы выяснить это во время выполнения).

Я бы также добавил в квитанцию ​​уникальный идентификатор корреляции и размер группы корреляции (в данном случае: общее количество сообщений A).

Для окончательного задания D я бы попросил шаги процесса B / C отправить сообщение с запросом "D-ready".Когда все сообщения D-ready будут собраны (на основе идентификатора корреляции / размера группы), я вызову финальное задание D.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...