
Ayrat
29.06.2018
10:40:45
Очень хорошо

Vasily
29.06.2018
10:40:46
У меня это нестрашно
Я персистить буду только определенные сообщения
Для последующей переотправки

Google

Ayrat
29.06.2018
10:41:18
Т.е. есть всегда возможность продолжить работу. пока жива система она может перезапустить акторов
При этом у меня как-то актори система жила на машине где память кончилась, в контейнере лимит харда выжрали логи, а цпу спинлочился на какой-то левой программе которая пыталась эти логи гигабайтные регекспамит прочитать.
И она мне отвечала удалённо лол
Я даже дамп не смог удалённо снять, а убить акторов грейсфули чтобы не просрать важные сообщения смог. Магия блин
я после этого поверил в чудеса

Bonart
29.06.2018
10:51:44
Так вот они какие, тихоходки

Roman
29.06.2018
12:22:05

Vasily
29.06.2018
13:59:47
Кстати, одноразовые акторы делаются без rec?

Pavel
29.06.2018
14:00:48
Одноразовый это как?
Словил один месседж и умер?

Vasily
29.06.2018
14:01:09
Ну он нужен на прием одного сообщения
Да

Pavel
29.06.2018
14:01:33
Нужно чтобы он сам себе poisonPill послал

Google

Roman
29.06.2018
14:01:37
Пиши как обычно, убивай стандартными средствами.

Pavel
29.06.2018
14:01:46
А rec тут не причем

Ayrat
29.06.2018
14:04:38
ток имей в виду что пойзон пил имеет повышенный приоритет в мейлбоксе.

Vasily
29.06.2018
14:07:42
Непонятно пока
В общем, ситуация следующая
У меня есть канал
У него есть стейт

Ayrat
29.06.2018
14:08:30
Ну смотри. у тебя в мейлбоксе 100 собщений важных, необработанных. Ты шлёшь пойзон пилу, у неё повышенный приоритет, актор обрабаывает её первую и умирает. все сообщения уходят в дедлеттерс сразу

Vasily
29.06.2018
14:08:34
Плюс мне приходят сообщения
КОторые надо отправить в канал
Перед отправкой надо проверить стейт
Стейт канала у меня по факту является контекстом, куда я пишу сообщения
BinaryWriter*BinaryREader
Вот и думаю, как все это совместить
Т.е. во внешний актор приходит сообщения для отсылки
Я должен получить текущий стейт и попробовать отосласть

Ayrat
29.06.2018
14:11:39
Я для таких вещей делал ин мемори шаред стейт, но ентерпрайзненько внедрял их в акторы через DI
иногда что-то проще сделать без акторов

Vasily
29.06.2018
14:11:57
Да проще сообщение трансформить
Пришло сообщение, к нему клеить стейт, кидать в актор

Google

Ayrat
29.06.2018
14:12:50
т.е. если у тебя в натуре есть стейт и его надо расшарить инмемори - шарь, но конкурентные струкруты юзай.
Если надо стейт ремоутить, тут да, придётся оборачивать
оборачивать этот стейт в актора и отдавать наружу интерфейсы типа Добавь, измени, удали и пр

Pavel
29.06.2018
14:15:52
Я все-таки не уловил зачем shared state. Почему нельзя его инкапсулировать в акторе?
Мне кажется тут можно на акторах разрулить, вероятно со сменой состояния

Ayrat
29.06.2018
14:19:17
Ну когда надо просто между акторами замутить справочный мапинг, то... можно просто сделать ConcurrentDictionary :D
не, конечно можно актором, типа внутри у него обычный дикшнари и сделать там набор сообщений, дайПоКлючу, удалиПоКлючу и пр

Vasily
29.06.2018
14:20:10
Ситуация немного другая
Думаю, чего актор сообщения не принимает. Оказалось - шлю не те....
Такс, Option мы гонять не можем по актору, как я понимаб
*понимаю
По некоторым причинам

Pavel
29.06.2018
14:26:54
Ну если все крутиться на одной машине и на f# то почему нет?

Vasily
29.06.2018
14:27:14
None\
Ругается
На null
МВАХАХАХАХА

Ayrat
29.06.2018
14:27:29
да, он в null превращается
в рантайме
это ж ОПТИМИЗАЦИЯ
:D

Google

Vasily
29.06.2018
14:27:46
Отстрел ноги

Ayrat
29.06.2018
14:28:53
введи тип DomainMsg, куда добавишь Id сообщения, дату создания, TTL и пр что пригодится для логирования и метрик.
в него можно будет оборачивать Option
ну это как бы совсем ентерпрайзненько

Vasily
29.06.2018
14:31:11
Это пока рано

Ayrat
29.06.2018
14:31:44
Но проблему решает

Vasily
29.06.2018
14:41:59
Так, осталось понять, как DeadLetters глядеть

Ayrat
29.06.2018
14:42:34
Тебе для дебага?

Vasily
29.06.2018
14:42:41
Угу

Ayrat
29.06.2018
14:43:06
В конфиге можно указать чтобы дедлетерсы отображались в логере

Vasily
29.06.2018
14:43:33
А логер куда скидывается по умолчанию?

Ayrat
29.06.2018
14:43:44
{
"akka": {
"stdout-loglevel": "DEBUG",
"loglevel": "DEBUG",
"log-config-on-start": "on",
"actor": {
"debug": {
"autoreceive": "on",
"lifecycle": "on",
"unhandled": "on",
"router-misconfiguration": "on"
}
},
"loggers": [
"Akka.Event.StandardOutLogger, Akka"
]
}
}
да там что угодно можно подключить
это вот нормальная конфига для дебага.
показывает лайфсайл месаги акторов, типа родился умер, показывает анхедлд, т.е. те которые прилетели в актора а у него хендлера не оказалось ну и т.д.

Roman
29.06.2018
14:54:25
А не для дебага? Т.е. у меня шарды и как понять что сообщение не дошло и переотправить?

Ayrat
29.06.2018
14:55:35
"Не дошло и переотправить" конфиг не сможет :D это проблема логики
боюсь придётся написать немного кода ;)

Evgeniy
29.06.2018
14:57:37
Довольно жестко ты обошелся с программистами C#. :)

Ayrat
29.06.2018
14:59:30
Да, постебал их чутка. Думал, закопают после митапа, но нет, обошлось

Evgeniy
29.06.2018
15:00:05
Пример со схемой понравился, оригинально. :)

Google

Ayrat
29.06.2018
15:00:38
Самое сложное было найти патент
И перерисовать пример из книги :)

Vasily
29.06.2018
15:09:21
ПОхоже, акка еще не умеет пересылать сообщения вида 'a->unit

Ayrat
29.06.2018
15:09:59
Честно скажу, не пробовал никогда.

Vasily
29.06.2018
15:10:30
Для меня это нормальный процесс сбора грабель :)

Pavel
29.06.2018
15:15:30

Bonart
29.06.2018
16:03:34

евроневидимка
29.06.2018
16:04:47

Ayrat
29.06.2018
17:36:49
Как он все же будет отвечать на запросы?
Поздний ответ.
ну это ж вебсервер. он работает как обычный вебсервер, слушая порты, роуты и пр. И так же он актор, поэтому он принимает сообщения и может их отсылать.

Roman
29.06.2018
17:41:29

Ayrat
30.06.2018
00:14:54

Evgeniy
30.06.2018
07:36:09
https://twitter.com/k_cieslak/status/1001804822704787456

Ayrat
30.06.2018
07:37:24
твит от 30го мая же

Evgeniy
30.06.2018
07:38:22
Я человек простой, вижу @sergey_tihon репостит -- сам репощу. :)
Сам я чаще в Rider пишу, давно не слежу за обновлениями Ionide. ?

Sergey
30.06.2018
08:16:42
хороший формат для F# встреч
(столик на 4х =) )
https://www.meetup.com/FSharp-Toronto/events/251728582/

Evgeniy
30.06.2018
08:18:27
Ну, @neftedollar занимается организацией F# бирапов в Москве. :)