2017-04-04 1 views
0

J'essaie de tirer sur une requête POST comme celle dans les docs Akka montré ici. Cependant, j'essaye de le faire comme à l'intérieur d'une autre classe définie. Si j'essaye d'ajouter quelque chose qui exige le Actor context comme val http = HTTP(context.system) j'obtiens une erreur. Comment puis-je passer dans le contexte de la classe à partir de laquelle j'essaie de faire la requête POST?Get contexte de Acteur principal dans Akka

trait CustomerProfilesComponent { 
    def customerProfileManager: CustomerService.Async 
} 

object DefaultCustomerProfiles { 
    private case class ProfileUpdateData(path: Seq[String], data: JsObject, metadata: JsObject) 
} 

trait DefaultCustomerProfiles extends CustomerProfilesComponent { 
    self: DatabaseComponent with SourceVersionComponent with ExecutionContextComponent => 

    import DefaultCustomerProfiles._ 

    lazy val customerProfileManager = new CustomerService.Async { 

    import db.api._ 
    import AvroConverter._ 

    override def getVersion : Future[AvroVersion] = { 
     Future.successful(toAvro(sourceVersion)) 
    } 
} 

Répondre

0

Ce dont vous avez besoin est en réalité actor system. Publication à partir des documents akka-http:

L'API de niveau requête est implémentée au-dessus d'un pool de connexions partagé à l'intérieur d'ActorSystem.

Il y a deux scénarios d'utilisation pour l'API demande:

  • Utilisez-le within an actor - quand vous pouvez obtenir le système d'acteur par le contexte de l'acteur (comme vous avez essayé, mais puisque vous n'êtes pas à l'intérieur d'un acteur, vous ne disposez pas d'un contexte d'acteur disponible)
  • utilisent outside an actor (votre cas) - quand vous pouvez obtenir le système d'acteur en fournissant comme une dépendance (soit par params de classe/méthode ou params implicites)

J'espère que c'est utile.