Size: a a a

2020 April 16

КГ

Константин Грачев in PHP
Volodymyr Melko
если б он при этом не лочил БД, было бы норм
У меня как раз недавно спрашивали, не ляжет ли база если мы 50 тыщ клиентов запустим. Проект ещё не в проде, я такой - ну есть пара мест, но не должен)
источник

DT

Dmitriy Tkachenko in PHP
Константин Грачев
Я вот тоже думаю может генерить номер на событие о создании счёта. Но как то не понятно получается, например чтобы отправить уведомление мне надо реагировать не на событие о создании заказа, а на событие о присваивании номера?
Как будто в этом что-то не так
в событии создания заказа уже должен лежать порядковый номер
источник

VM

Volodymyr Melko in PHP
Константин Грачев
Я вот тоже думаю может генерить номер на событие о создании счёта. Но как то не понятно получается, например чтобы отправить уведомление мне надо реагировать не на событие о создании заказа, а на событие о присваивании номера?
Как будто в этом что-то не так
можно криейтед бросать после присваивания номера, а без номера кидать что-то другое, аля OrderPrepared
источник

КГ

Константин Грачев in PHP
Dmitriy Tkachenko
в событии создания заказа уже должен лежать порядковый номер
Кто сказал?
источник

AW

Alex Wells in PHP
Dmitriy Tkachenko
в событии создания заказа уже должен лежать порядковый номер
uuid
источник

КГ

Константин Грачев in PHP
Я наверное что-то не так делаю, но постоянно ловлю себя на мысли что делаю какую то хрень.
Например у меня команда, сущность и ивент и создании это 3 одинаковых класса.. названия только разные и у сущности все поля private. Так должно быть блин?)
источник

MM

Maksim Masiukevich in PHP
заказ уже создан, значит у него есть айдишник)
источник

КГ

Константин Грачев in PHP
Maksim Masiukevich
заказ уже создан, значит у него есть айдишник)
Номер это чисто визуальная часть для клиента, айдишник там uuid
источник

VM

Volodymyr Melko in PHP
Константин Грачев
Я наверное что-то не так делаю, но постоянно ловлю себя на мысли что делаю какую то хрень.
Например у меня команда, сущность и ивент и создании это 3 одинаковых класса.. названия только разные и у сущности все поля private. Так должно быть блин?)
в ивенте по хорошему только айдишник =)
источник

MM

Maksim Masiukevich in PHP
Константин Грачев
Номер это чисто визуальная часть для клиента, айдишник там uuid
ясн) тред не читал)
источник

КГ

Константин Грачев in PHP
Что такое "по хорошему"?)
А если пока событие летит до хендлера следом происходит ещё изменение, и когда хендлер достаёт рид модель, она уже не та что была на момент создания?)
источник

MM

Maksim Masiukevich in PHP
велкам в мир конечной согласованности
источник

КГ

Константин Грачев in PHP
Maksim Masiukevich
велкам в мир конечной согласованности
Тут только боль или печеньки тоже бывают?)
источник

MM

Maksim Masiukevich in PHP
Константин Грачев
Тут только боль или печеньки тоже бывают?)
всюду только боль
источник

КГ

Константин Грачев in PHP
эх. Я так понимаю по хорошему это it depends
источник

VM

Volodymyr Melko in PHP
Константин Грачев
Что такое "по хорошему"?)
А если пока событие летит до хендлера следом происходит ещё изменение, и когда хендлер достаёт рид модель, она уже не та что была на момент создания?)
и что, после изменения полетит и другой ивент, что сущность изменилась.

Если тебе нужно что-то сделать с сущностью в конкретном состоянии, до того как она изменилась - это уже не событие
источник

VM

Volodymyr Melko in PHP
или не совсем событие, имхо
источник

КГ

Константин Грачев in PHP
Volodymyr Melko
и что, после изменения полетит и другой ивент, что сущность изменилась.

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

КГ

Константин Грачев in PHP
И вообще нет у меня пока никакой задержки, кролика чуть позже буду разворачивать)
источник

VM

Volodymyr Melko in PHP
имхо, чем меньше данных содержит ивент - тем лучше.
но, например, ивент об изменение сущности вполне логично может содержать старые и новые значения.
Я видел одну системку, там все ивенты были типа
AbstractEntityEvent - сожержит все поля сущности
EntityCreatedEvent extends AbstractEntityEvent
EntityUpdatedEvent extends AbstractEntityEvent - содержит кроме текущего состояния еще и все предыдущее
EntityDeletedEvent extends AbstractEntityEvent

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