Я использую ActorPublisher
в качестве Akka-Stream Source
. Я не могу понять, как предсказуемо назвать актера ввода, чтобы я мог отправлять ему сообщения из других частей моего приложения. Я создаю свой источник следующим образом:
val src = Source[Task](Props(classOf[TaskListener], this), "task-listener")
Я получаю ActorRef
, когда материализую поток, но путь для него генерируется динамически, и он использует предоставленное мной имя только как часть сгенерированной кодом схемы именования, ориентированной на поток.
Есть ли способ, чтобы этот внешний источник актера имел явное имя, или я застрял, передавая ActorRef?
Если я не могу указать это явно, значит ли это, что вы не можете использовать Akka-Stream напрямую с удаленным взаимодействием?
EDIT: Теперь я могу найти своего актера, используя относительный путь, но мне все еще нужно выяснить, как назвать мой Flow
, чтобы я мог понять, каким будет полный путь к рассматриваемому актеру.
EDIT: (информация о версии akka ниже, scala 2.11.6)
"com.typesafe.akka" %% "akka-actor" % "2.3.9"
"com.typesafe.akka" %% "akka-stream-experimental" % "1.0-M4"
РЕДАКТИРОВАТЬ: Дружелюбные люди из группы akka-user google просветили меня и предложили правильный способ справиться с этим, передавая ActorRef
, который является результатом самого вызова runWith()
, а не используя .actorSelection()
. Я обновлю этот вопрос, если обнаружу, что это положение вещей изменится в будущем. Спасибо за чтение.
Source
, используяSource.actorPublisher
, затем создалFlow
, на котором я вызвалflow.runWith(src)
, но с тех пор этот метод устарел. Надеюсь, вы уже разобрались с проблемой. - person Rich Henry   schedule 27.08.2018