Комментарии 7
Все правильно поняли: если сообщение не дошло до брокера, то оно не удаляется из очереди. Обычно в фоне крутится джоба (для упрощения 1 инстанс, иначе их надо синхронизировать на уровне базы данных), которая переотправит такие сообщения. Код потребителей должен быть готов к дубликатам и быть идемпотентным. Помимо этого, вместе с сообщением всегда идет версия объекта. Если потребителю пришло что-то отличное от current version + 1, то он не принимает такие сообщения, возвращая их обратно в очередь. Так мы реализуем коммутативность потребителей.
Вывод относительно статьи: сколько кода не пиши, пицца от этого вкуснее не станет…
когда у меня стояла задача контроля над распределёнными ресурсами и я увидел что на инвентаризацию тратится слишком много времени, я ввёл собственную систему штрих-кодов, в которых закодирован код продукта, тип упаковки, дата изготовления. теперь инвентаризацию можно делать не думая — просто пропикать всё штрих-код сканером, и ничего не надо вводить вручную.
у если для каждого экземпляра продукта ввести уникальный номер то можно вобще избавиться от пересортицы и автоматизировать склад. если прикрутить это всё к весам то будет выглядеть так: положили на весы, пикнули — всё, товар в базе. попробуйте, мне очень помогло. если какая-то помощь нужна пишите без проблем, дам код и все наработки <3 любимая пицца
В команде «добавление замера» есть следующие поля:
единица измерения: кг/г, л/мл, штуки;
Зачем в замере единицы измерения? При желании можно сыр померить в мл, а вино в кг? Почему не подтягивается из "идентификатора сырья"?
Как DDD помог нам построить новые ревизии в пиццериях