Size: a a a

2020 August 11

ВУ

Валентин Удальцов... in PHP
Sergey Protko
на тему проекций и агрегатов...

ПРОЕКЦИИ могут быть не только left fold стрима, они могут так же на основе этого left fold кидать новые события. Например

projection
  .on(stream)
  .partitionBy(({customerId}) => customerId)
  .init(() => 0)
  .on('OrderConfirmed', (numberOfOrders, emit) => {
       numberOfOrders++
       if (numberOfOrders === 3) {
            emit(customerPurchasedThreeOrders())
            numberOfOrders = 0
       }
       return numberOfOrders
  }
А куда это новое событие пойдёт? В новый стрим или в текущий?
источник

DT

Dmitriy Tkachenko in PHP
в новый по идее
источник

DT

Dmitriy Tkachenko in PHP
похоже на stream api из кафки
источник

DT

Dmitriy Tkachenko in PHP
а она создает отдельный топик при обработке стрима
источник

ВУ

Валентин Удальцов... in PHP
Просто эта проекция неидемпотентна. При каждом запуске новый поток таких customerPurchasedThree
источник

ВУ

Валентин Удальцов... in PHP
Это выглядит как миграция стримов, когда внедряется новое событие, которого раньше не было)
источник

SP

Sergey Protko in PHP
Валентин Удальцов
А куда это новое событие пойдёт? В новый стрим или в текущий?
в новый стрим)
источник

DT

Dmitriy Tkachenko in PHP
ну если учесть что стрим аппенд онли
источник

DT

Dmitriy Tkachenko in PHP
то как ты в нужное место вставишь новое сообщение?
источник

SP

Sergey Protko in PHP
можешь глянуть как в eventstore сделано)
источник

SP

Sergey Protko in PHP
Валентин Удальцов
Просто эта проекция неидемпотентна. При каждом запуске новый поток таких customerPurchasedThree
мммм.... почему?
источник

SP

Sergey Protko in PHP
Валентин Удальцов
Просто эта проекция неидемпотентна. При каждом запуске новый поток таких customerPurchasedThree
у тебя считай "стрим вычисляемый по другому стриму"
источник

ВУ

Валентин Удальцов... in PHP
Sergey Protko
мммм.... почему?
Я понял, это просто динамическая формула нового стрима = новый стрим
источник

DT

Dmitriy Tkachenko in PHP
у нового стрима тоже есть свой оффсет, поэтому он знает что уже обработал
источник

SP

Sergey Protko in PHP
да, в концептах Грега Янга все ж упор больше на формирование стримов а не на "отправь email по событию"
источник

ВУ

Валентин Удальцов... in PHP
Дошло, спасибо)
источник

ВУ

Валентин Удальцов... in PHP
Sergey Protko
можешь глянуть как в eventstore сделано)
Ты его юзаешь на проекте, кстати?
источник

ВУ

Валентин Удальцов... in PHP
Я смотрел, мне очень понравилось. Ничего лишнего, всё как надо
источник

SP

Sergey Protko in PHP
неа... я тыкал его просто что бы проникнуться идеей
источник

SP

Sergey Protko in PHP
у меня свои велосипеды
источник