Nikolay
а если он и нас перебанит? 😱
Главное не давать ему много власти
Анна
Кстати, пилил когда-то :)
воу! на гитхабе есть?
Nikolay
воу! на гитхабе есть?
Нет, он потерялся где-то на харде
Анна
Nikolay
Щас напишем
Nikolay
Придумаю ток как назвать
Nikolay
Придумал!
Анна
Я просто раньше никогда про это не думала
Анна
а идея кажется банальна :)
Éminence grise
Там правда сервер и сериализация квотейшенов
Nikolay
А system и ActorRef надо в какой-то рекорд заворачивать, или ещё куда-то?
Nikolay
Или можно прямо пилить в модуле?
Nikolay
И к модулю обращаться
Vladislav
Ты систему через контекст актора получить можешь
Nikolay
Ну вопрос остаётся :)
Vladislav
Тебе не нужно шарить систему если ты ее из актора получить можешь
Nikolay
Так а как актора в актора передать?
Klei
А system и ActorRef надо в какой-то рекорд заворачивать, или ещё куда-то?
Две системы тебе не понадобятся. Можешь для удобства хранитьсистему в модуле, но только в main.
Klei
Так а как актора в актора передать?
АкторРеф можно перекидывать.
Klei
Селекты нет.
Nikolay
Суть вот в чём: Есть разные акторы, которые будут какие-то действия выполнять, и есть актор, через который будут все сообщения в телеграм апи уходить, так вот как из других акторов получить доступ к этому актору?
Nikolay
Селектом?
Fail
ActorSelection
Nikolay
Т.е. он достаточно быстрый?
Hog
Если он один - ты ж всегда актор реф по заранее известному адресу можешь получить
Nikolay
Окей, спасибо
Nikolay
А как принято хранить имена акторов?
Nikolay
В DU там, или Literal'ом?
Fail
(но неточно)
Ayrat
можно же разрезолвить вроде
Можно, но не нужно 100%
Ayrat
Акторселекшн + Identity message = actroRef
Да, забыл об этом способе
Ayrat
Оба этих способа применять не стоит =)
Romɑn
🌚
В литералах:D
Ayrat
А как принято хранить имена акторов?
в глобальных константах или функциях от параметра если там пул акторов одинаковых
Hog
Оба этих способа применять не стоит =)
Тогда глобальный акторреф через который пусть всё уходит
Hog
Я с аккой давно игрался :) но это ж флудилка :)
Nikolay
let requestProcessor = select context.System RequestProcessor let req = sendMessage 1L "Hello, world!" requestProcessor <! req
Nikolay
Так же можно?
Nikolay
Или tell оператор нужно применять только к IActorRef?
Nikolay
(<!) (actorRef : #ICanTell<'Message>) (msg : 'Message) : unit - tell operator, sends a message to target actor through it's actor ref.
Nikolay
Но при этом ошибки нет
Ayrat
Или tell оператор нужно применять только к IActorRef?
tell в оригинале к ICanTell применяется. ActorSelection и ActorRef оба такие
Nikolay
Спасибо)
Nikolay
Так, я снова с глупыми вопросами. Если актора не существует, а я select делаю, всё равно TypedActorSelection вернётся?
Nikolay
И как узнать, есть ли актор?
Nikolay
И если нет - создать
Romɑn
Шли сообщение Identity
Romɑn
Если ответит, значит есть
Ayrat
Ненененене, так делать не стоит
Romɑn
И что взамен?
Ayrat
Ща абисню
Romɑn
Роутер Post?
Nikolay
Я помню слова Вагифа, что Ask не надо юзать
Nikolay
Tell don't ask там было вроде
Romɑn
Я помню слова Вагифа, что Ask не надо юзать
Да не через аск опрашивать же)
Romɑn
Tell don't ask там было вроде
Это тут не причем
Nikolay
Короче, мне нужен некий selectOrSpawn
Ayrat
Предположим мы допускаем в нашей программе что возможны ситуации когда актора на той стороне нет, тогда мы или получаем постоянные deadletters (потерю логики блин!) или мы постоянно сами себе злобные буратины и должны КАЖДЫЙ раз по селекшнеу резолвить акторреф, т.е. замедлять каждый tell на порядок Оба варианта катастрофично снижают отзывчивость и работоспособность.
Hog
А акторреф в мессаже же нельзя?
Vasily
Лучше не надо
Vasily
Он же поменяться может
Hog
Как актору ответить не родителю, не сендеру
Romɑn
А тут спрашивают по конкретный)
Romɑn
Но если говорит про "каждый" то тут я, согласен
Ayrat
Как лучше сделать. Если надо создавать акторов в динамике и так же их удалять, делать это через актора диспетчера который будет заведовать лайфтаймом акторов. например - кто-то посылает NewUserChat сообщение в систему. Актора под такого юзера нет, поэтому у нас есть актор UserChatsDispatcher через которого проходят все сообщения для UserChat акторов. Он видит что такого актора нет, создаёт его и роутит сообщение туда. Он в себе держит все ActorRef чтобы их убивать при необходимости. Таким образом мы не получим потери сообщений и не надо ресолвить каждый раз все акторселекшны
Hog
Ну мы опять вернулись к началу
Ayrat
А акторреф в мессаже же нельзя?
ни в коем случае! акторреф при стоп/старте меняется. Акторселекшн вечный
Romɑn
@Dolfik посмотри на орлинс