Я работаю с Java rabbitmq API. Это как мое приложение выглядит следующим образом: Синхронизация очереди
Издатель A
посылает задания на Q1
, то многие потребители B
сделать работу и создать новое задание и отправить его в Q2
, где многие потребительские C
сделать работу.
Я хочу удостовериться, что никакие дублированные задания не отправляются на Q2
, как я могу это достичь?
Прими во внимании два сценария:
B
аварии после отправки задания наQ2
, но перед отправкой подтвержденияQ1
, что он завершил работуB
аварии после отправки подтвержденияQ1
но перед отправкой задания наQ2
Использование 'reddis' или' memcached', чтобы проверить, если задание было представлено уже? –
@AvihooMamka Я не понимаю. Можете ли вы дать полный ответ, пожалуйста, –
Можете ли вы сделать какую-то систему, которая управляет двойными записями или будет потреблять слишком много времени? Я представляю что-то вроде этого: Q1 дает каждой записи все большее число, Q2 хранит список с этими номерами в порядке (каждый раз, когда что-то входит в Q2, в этот список помещается номер).Предполагая, что обычно порядок, в котором B обрабатывает задания, не слишком сильно скрещивает числа, вопрос о том, есть ли что-то в списке или нет, должен быть быстрым, потому что нужно пройти лишь небольшую часть списка. – Aziuth