Size: a a a

Scala User Group

2020 November 11

TT

Taika Tytto in Scala User Group
источник

R

RAFIZ in Scala User Group
Taika Tytto
Command он паттернматчит в GetUsers, CreateUsers и т.д.

Здесь определён тип для сообщения, которое будет ответом на заданное действие (...replyTo : ActorRef[_])

Я сам только начал работать с akka actors, тут видимо в самом действии replyTo содержится адрес. ActorRef определяет тип сообщения, которое можно отослать.

А так почитайте доки Akka Typed Actors, там это объясняется лучше.
запись
replyTo: ActorRef[ActionPerformed]
означает, что replyTo - это актор, принимающий сообщения типа ActionPerformed, разве нет?
это и в записи
replyTo ! ActionPerformed(s"User \${user.name} created.")
отражено

Вопрос в том, где такой актор создаётся?не могу найти в этом проекте
источник

TT

Taika Tytto in Scala User Group
RAFIZ
запись
replyTo: ActorRef[ActionPerformed]
означает, что replyTo - это актор, принимающий сообщения типа ActionPerformed, разве нет?
это и в записи
replyTo ! ActionPerformed(s"User \${user.name} created.")
отражено

Вопрос в том, где такой актор создаётся?не могу найти в этом проекте
источник

TT

Taika Tytto in Scala User Group
В QuickstartApp
источник

R

RAFIZ in Scala User Group
тут как раз создаётся актор UserRegistry, который знает как обрабатывать сообщения типа Command, а не ActionPerformed
источник

R

RAFIZ in Scala User Group
источник

TT

Taika Tytto in Scala User Group
RAFIZ
тут как раз создаётся актор UserRegistry, который знает как обрабатывать сообщения типа Command, а не ActionPerformed
В чем проблема, если каждый Command уже знает как это делать?
источник

R

RAFIZ in Scala User Group
Taika Tytto
В чем проблема, если каждый Command уже знает как это делать?
Command ничего не может знать, это просто тип сообщения

знать могут акторы. как создаётся актор принимающий сообщения типа Command я вижу, а  как создаётся актор принимающий сообщения типа ActionPerformed - не вижу (при этом к нему в коде идёт обращение, как ни странно)
источник

TT

Taika Tytto in Scala User Group
RAFIZ
Command ничего не может знать, это просто тип сообщения

знать могут акторы. как создаётся актор принимающий сообщения типа Command я вижу, а  как создаётся актор принимающий сообщения типа ActionPerformed - не вижу (при этом к нему в коде идёт обращение, как ни странно)
Так вы почитайте документацию...

Это не актор принимает сообщения типа ActionPerformed, это определяется в каждой Command для тайпчека сообщений.
источник

R

RAFIZ in Scala User Group
Taika Tytto
Так вы почитайте документацию...

Это не актор принимает сообщения типа ActionPerformed, это определяется в каждой Command для тайпчека сообщений.
я читал :)
replyTo ! ActionPerformed(s"User \${user.name} created.")
вот эта запись что означает, в таком случае?
источник

TT

Taika Tytto in Scala User Group
В файле UserRoutes
источник

TT

Taika Tytto in Scala User Group
RAFIZ
я читал :)
replyTo ! ActionPerformed(s"User \${user.name} created.")
вот эта запись что означает, в таком случае?
Она означает, что будет отправлено сообщение типа ActionPerformed
источник

AM

Andrey Mikhaylov in Scala User Group
RAFIZ
я читал :)
replyTo ! ActionPerformed(s"User \${user.name} created.")
вот эта запись что означает, в таком случае?
Это значит, что в классе command передается актор, который имеет behavior для типа actionperformed
источник

R

RAFIZ in Scala User Group
Andrey Mikhaylov
Это значит, что в классе command передается актор, который имеет behavior для типа actionperformed
да. а на практике передаются вайлдкарды
источник

R

RAFIZ in Scala User Group
Andrey Mikhaylov
Это значит, что в классе command передается актор, который имеет behavior для типа actionperformed
и такой актор нигде не определяется. так можно?
источник

R

RAFIZ in Scala User Group
я имею в виду, что до этого я видел только такой порядок действий:
1) описываем поведение актора в объекте-синглтоне
2) создаём актор (допустим myActor)
3) и потом уже для него отрабатываем myActor.ask(...), myActor ! (...)
в данном же случае первые два пункта, как-будто опущены. а 3 пункт вообще с помощью вайлдкарда производится
источник

AM

Andrey Mikhaylov in Scala User Group
RAFIZ
и такой актор нигде не определяется. так можно?
Можно через ask, об этом и есть пример. Ask в виде фьючи представляет ответ от актора и для этого не требуется создавать отдельный актор
источник

НМ

Никита Мязин... in Scala User Group
RAFIZ
да. а на практике передаются вайлдкарды
Это не вайлдкарты, это лямбды
источник

R

RAFIZ in Scala User Group
Andrey Mikhaylov
Можно через ask, об этом и есть пример. Ask в виде фьючи представляет ответ от актора и для этого не требуется создавать отдельный актор
ага, вот теперь понятно, что так можно, спасибо
источник

AM

Andrey Mikhaylov in Scala User Group
RAFIZ
ага, вот теперь понятно, что так можно, спасибо
источник