Size: a a a

Scala User Group

2020 September 20

AH

Ayrat Hudaygulov in Scala User Group
прикольно ты мыслишь.
источник

AH

Ayrat Hudaygulov in Scala User Group
AskWithNoReply == Tell with overhead
источник

S

Simon in Scala User Group
Ayrat Hudaygulov
прикольно ты мыслишь.
я показал, что сообщения все еще обрабатываются при аске, даже если ответа ждать придется вечно
источник

AH

Ayrat Hudaygulov in Scala User Group
λoλegΥch
так а зачем ты тогда расказываешь как оно работает under the hood?
это не про under the hood, это как раз таки весьма абстрактно и относится к любому процессу где есть очередь работ и обработчик с блоком
источник

AH

Ayrat Hudaygulov in Scala User Group
Simon
я показал, что сообщения все еще обрабатываются при аске, даже если ответа ждать придется вечно
ты запустил отправку сообщения и НЕ ДОЖИДАЯСЬ ОТВЕТА пошёл обрабатывать следующее.
источник

AH

Ayrat Hudaygulov in Scala User Group
ты прямо в коде это написал
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Так, что мы выяснили, что главный защитник акки в чате не знает акки?
источник

AH

Ayrat Hudaygulov in Scala User Group
это называется Tell
источник

S

Simon in Scala User Group
Ayrat Hudaygulov
прикольно ты мыслишь.
Ок, продемонстрируй свою мысль примером кода.
Я знаю только 1 способ остановить обработку месаджбокса аском - Await - надеюсь ты не предлагаешь его использовать
источник

S

Simon in Scala User Group
Ayrat Hudaygulov
ты запустил отправку сообщения и НЕ ДОЖИДАЯСЬ ОТВЕТА пошёл обрабатывать следующее.
Как я могу "ДОЖДАТЬСЯ ОТВЕТА"?
источник

AH

Ayrat Hudaygulov in Scala User Group
Simon
Как я могу "ДОЖДАТЬСЯ ОТВЕТА"?
анврапнув фьючу например
источник

S

Simon in Scala User Group
Ayrat Hudaygulov
анврапнув фьючу например
Await? Срсли? Нафиг-нафиг. Руки за такое отрывать по самую шею
источник

AH

Ayrat Hudaygulov in Scala User Group
Simon
Await? Срсли? Нафиг-нафиг. Руки за такое отрывать по самую шею
об том и речь
источник

S

Simon in Scala User Group
Ayrat Hudaygulov
об том и речь
О чем? Во всех мануалах по акке черным по синему - не блокируйте актора
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Simon
Как я могу "ДОЖДАТЬСЯ ОТВЕТА"?
Ну есть дебильный способ переключиться в бехейвиор, который будет складывать в Stash, пока не придёт нужное
источник

AH

Ayrat Hudaygulov in Scala User Group
Simon
О чем? Во всех мануалах по акке черным по синему - не блокируйте актора
я вроде выше об этом же и писал
источник

S

Simon in Scala User Group
Oleg ℕizhnik
Ну есть дебильный способ переключиться в бехейвиор, который будет складывать в Stash, пока не придёт нужное
Знаю, но это очень больно. Да и зачем?
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Simon
Знаю, но это очень больно. Да и зачем?
чтобы "ДОЖДАТЬСЯ ОТВЕТА"
источник

S

Simon in Scala User Group
Ayrat Hudaygulov
я вроде выше об этом же и писал
Так я только про AskPattern - он о том, чтобы получить ответ, а не о том, чтоб заблокироваться до его получения
источник

S

Simon in Scala User Group
Ayrat Hudaygulov
Tell, don't ask.

Аски убивают перформанс кластера тем что стопают обработку мейлбоксов на время ожидания аска. Кто-то может сказать - "но зато мы ждём асинхронно, и поток не блочится" и будет неправ, т.к. в акке рабочий лошадкой является актор, а не потоки, на которые их шедулят. И блок актора гораздо страшнее блока треда, т.к. треды обычно в тредпулах со стилинг алгоритмами работают и очередь заблоченного треда могут разобрать другие треды.

За актора никто его мейлбокс не почистит, он так и будет в аске висеть.
Подведем итог: аски ничего не убивают. Более того при ctx.ask нет даже Future на котором можно было бы заблокироваться
источник