Mam aktora z zachowania:wychodzący strumień połączenie zamknięte
def receive: Receive = {
case Info(message) =>
val res = send("INFO:" + message)
installAckHook(res)
case Warning(message) =>
val res = send("WARNING:" + message)
installAckHook(res)
case Error(message) =>
val res = send("ERROR:" + message)
installAckHook(res)
}
private def installAckHook[T](fut: Future[T]): Unit = {
val answerTo = sender()
fut.onComplete {
case Success(_) => answerTo ! "OK"
case Failure(ex) => answerTo ! ex
}
}
private def send(message: String): Future[HttpResponse] = {
import context.system
val payload: Payload = Payload(text = message,
username = slackConfig.username, icon_url = slackConfig.iconUrl,
icon_emoji = slackConfig.iconEmoji, channel = slackConfig.channel)
.validate
Http().singleRequest(RequestBuilding.Post(slackConfig.hookAddress, payload))
}
a test
val actorRef = system.actorOf(SlackHookActor.props(SlackEndpointConfig(WebHookUrl,iconEmoji = Some(":ghost:"))))
actorRef ! Error("Some error message")
actorRef ! Warning("Some warning message")
actorRef ! Info("Some info message")
receiveN(3)
iw sposobie afterAll()
robię zamknięcie w systemie aktora wykorzystaniem TestKit
.
To działa, wniosek dotrze do serwera, ale są błędy z Akka strumieni część:
[ERROR] [06/26/2015 11:34:55.118] [SlackHookTestingSystem-akka.actor.default-dispatcher-10] [ActorSystem(SlackHookTestingSystem)] Outgoing request stream error (akka.stream.AbruptTerminationException)
[ERROR] [06/26/2015 11:34:55.120] [SlackHookTestingSystem-akka.actor.default-dispatcher-13] [ActorSystem(SlackHookTestingSystem)] Outgoing request stream error (akka.stream.AbruptTerminationException)
[ERROR] [06/26/2015 11:34:55.121] [SlackHookTestingSystem-akka.actor.default-dispatcher-8] [ActorSystem(SlackHookTestingSystem)] Outgoing request stream error (akka.stream.AbruptTerminationException)
Wydaje się, ponieważ mam Future zakończyła połączenie wychodzące powinny być już zamknięte, więc jest to błąd, czy też brakuje mi czegoś?
mam ten sam problem. Dzięki za pomoc. – jiangok
Potrzebujemy wzoru wyłączenia dla akka-stream. Ponieważ aktorzy przepływu są implicite, nie wiem, czy dobrze jest zastosować techniki wymienione w letitcrash.com/post/30165507578/shutdown-patterns-in-akka-2. – jiangok
Rewizja za lenistwo. Ani nagłówek, ani znaczniki nie dają użytecznych kontekstów. – mc0e