Nikolay
Nikolay
Анна
Анна
Nikolay
Щас напишем
Nikolay
Придумаю ток как назвать
Nikolay
Придумал!
Éminence grise
Анна
Я просто раньше никогда про это не думала
Анна
а идея кажется банальна :)
Éminence grise
Там правда сервер и сериализация квотейшенов
Nikolay
А system и ActorRef надо в какой-то рекорд заворачивать, или ещё куда-то?
Nikolay
Или можно прямо пилить в модуле?
Nikolay
И к модулю обращаться
Vladislav
Ты систему через контекст актора получить можешь
Nikolay
Ну вопрос остаётся :)
Vladislav
Тебе не нужно шарить систему если ты ее из актора получить можешь
Nikolay
Так а как актора в актора передать?
Klei
Klei
Селекты нет.
Nikolay
Суть вот в чём:
Есть разные акторы, которые будут какие-то действия выполнять, и есть актор, через который будут все сообщения в телеграм апи уходить, так вот как из других акторов получить доступ к этому актору?
Nikolay
Селектом?
Fail
ActorSelection
Nikolay
Т.е. он достаточно быстрый?
Hog
Если он один - ты ж всегда актор реф по заранее известному адресу можешь получить
Nikolay
Окей, спасибо
Ayrat
Nikolay
А как принято хранить имена акторов?
Fail
Nikolay
В DU там, или Literal'ом?
Fail
(но неточно)
Romɑn
Ayrat
Ayrat
Ayrat
Оба этих способа применять не стоит =)
Nikolay
Romɑn
Romɑn
Romɑn
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
Но при этом ошибки нет
Nikolay
Спасибо)
Nikolay
Так, я снова с глупыми вопросами. Если актора не существует, а я select делаю, всё равно TypedActorSelection вернётся?
Romɑn
Nikolay
И как узнать, есть ли актор?
Nikolay
И если нет - создать
Romɑn
Шли сообщение Identity
Romɑn
Если ответит, значит есть
Ayrat
Ненененене, так делать не стоит
Romɑn
Romɑn
И что взамен?
Ayrat
Ща абисню
Romɑn
Роутер Post?
Nikolay
Я помню слова Вагифа, что Ask не надо юзать
Nikolay
Tell don't ask там было вроде
Romɑn
Romɑn
Nikolay
Короче, мне нужен некий selectOrSpawn
Ayrat
Предположим мы допускаем в нашей программе что возможны ситуации когда актора на той стороне нет, тогда мы или получаем постоянные deadletters (потерю логики блин!) или мы постоянно сами себе злобные буратины и должны КАЖДЫЙ раз по селекшнеу резолвить акторреф, т.е. замедлять каждый tell на порядок
Оба варианта катастрофично снижают отзывчивость и работоспособность.
Hog
А акторреф в мессаже же нельзя?
Vasily
Лучше не надо
Vasily
Он же поменяться может
Hog
Как актору ответить не родителю, не сендеру
Romɑn
Romɑn
А тут спрашивают по конкретный)
Romɑn
Но если говорит про "каждый" то тут я, согласен
Ayrat
Как лучше сделать.
Если надо создавать акторов в динамике и так же их удалять, делать это через актора диспетчера который будет заведовать лайфтаймом акторов.
например - кто-то посылает NewUserChat сообщение в систему. Актора под такого юзера нет, поэтому у нас есть актор UserChatsDispatcher через которого проходят все сообщения для UserChat акторов. Он видит что такого актора нет, создаёт его и роутит сообщение туда. Он в себе держит все ActorRef чтобы их убивать при необходимости.
Таким образом мы не получим потери сообщений и не надо ресолвить каждый раз все акторселекшны
Vasily
Hog
Ну мы опять вернулись к началу
Romɑn
@Dolfik посмотри на орлинс