Ты все таки делаеш по сообщению на обработчик? Ты говорил тебя макс переубедил. Я так и не поверил сам в то что не надо размножать сообщения под каждый обработчик Уж очень дешево это и дает кучу бонусов
как работало! у него - кидаешь доменный ивент в очередь - он попадает в консюмера, консюмер находит всех обработчиков, один фэйлится - хуй знает кто упал - досвидос. Потому такие сложности с ретраями, dead latter тебе не помогут и т.д.
Он вроде собирался это чуть переделать что бы был промежуточный вариант между тем что у меня и тем что у него.
он меня переубедил что "можно по другому - можно мол сделать надежный консюмер который будет сам закидывать сообщения" но это тупо сложнее сделать и с моим потоком сообщений (не больше тысячи в секунду в пике) кролику норм а потому нахер напрягаться
мы просим бас отправить сообщение. Есть "глобальный роутинг" так что я знаю какие обработчики для какого сообщения.
Если скажем для сообщения Foo есть два обработчика - мы для каждого будем сообщение заворачивать в свой конверт. Каждый для своего ресипиента. В итоге в exchange уйдут два сообщения.
в итоге оба конверта попадут в консюмеры (могут даже паралельно если консюмеров много) и будут обработаны. если чет пошло по пизде - reject, dead letter и попадает в retry queue. Там уже пишем сообщеньку в базу с таймаутом (как в nservicebus) и эта очередь общая для все консюмеров
я к слову уже рад что не послушал Макса) я сча добавил роутинг за вечерок. Мол мне надо было что бы у разных хэндлеров разные SLA были и вжух вжух просто у ресипиентов появились группы, теперь мол можно роутинг кий для разныэ хнвелов направлять в нужные очереди