2014-05-24 1 views
1

Je suis en train d'écrire une bibliothèque de client de service http en utilisant un client spray can, qui utilise akka io.Configurer spray.can.client dans une bibliothèque

Pour que le client fonctionne correctement, j'ai besoin de définir des options de configuration non-par défaut spray.can.config (j'ai besoin de régler respone-chunk-aggregation-limit = 0 pour gérer correctement les grandes réponses en segments). Je voudrais 1) regrouper ce paramètre dans le client d'une manière ou d'une autre pour que les utilisateurs de la bibliothèque n'aient pas à faire de configuration explicite, et 2) l'appliquer uniquement dans l'utilisation du client de pulvérisation de ma bibliothèque client, pas Par inadvertance, les choses sont mal configurées au cas où les utilisateurs de la bibliothèque client utiliseraient le client spray ailleurs (ce que je sais qu'ils sont susceptibles de faire - notre org utilise le spray dans la plupart de nos projets dans une configuration SOA).

Puisqu'un client de spray-can n'est pas une instance de classe configurée, et parce qu'il est couplé d'une manière que je ne comprends pas complètement avec akka.io.IO, je ne suis pas sûr où et comment la configuration se produit. (La configuration de spray.can.client fait-elle partie de la configuration du système d'acteur qu'il utilise?)

Quoi qu'il en soit, si quelqu'un a fait quelque chose comme ça ou a des conseils, j'aimerais en savoir plus.

Merci!

Répondre

3

Cela dépend de la façon dont vous utilisez réellement le client de pulvérisation dans votre application. Dans tous les cas, tous les paramètres de configuration peuvent également être configurés lors de l'exécution. Voir ClientConnectionSettings et HostConnectorSettings. Chaque API de niveau requête, API de niveau connexion et API de niveau hôte permet de spécifier ces paramètres.

val customSettings = ClientConnectionSettings(system) 

-niveau de connexion:

IO(Http) ! Http.Connect("www.spray.io", port = 8080, settings = Some(customSettings)) 

hôte niveau:

val customHostSettings = HostConnectorSettings(system).copy(connectionSettings = customSettings) 
IO(Http) ! Http.HostConnectorSetup("www.spray.io", port = 80, settings = customHostSettings) 

Demande niveau:

IO(Http) ? (HttpRequest(GET, Uri("http://spray.io")), customHostSettings) 
+0

'ClientConncetionSettings' /' HostConnectorSettings' est exactement ce que je était lookginf pour. Merci! – gmjabs

Questions connexes