spray-can的初识

严成礼
2023-12-01

 

1.根据自已的理解

其实spray-can的主要部分有 IO-HTTP,listener与handle

IO-HTTP是我们的system actor后,listener actor前的一个actor,他负责管理TCP,HTTP等的"管理员"

the manager actor for the given IO extension

 

而listener是一个注册在IO Actor的,绑定在指定的port

我们可以通过

   IO(Http) ! Http.Bind(lis, interface = "localhost",port=8080)
   IO(Http) ! Http.Bind(lis2,interface = "localhost",port=8081)

进行绑定,Bind的接受方其实是个  HttpListener实例,这个实例是private,只能用messages进行互动(以后可以用于stop,或者获取stats信息等),

例如向第一个HttpListener获取stats的信息

system.actorSelection("/user/IO-HTTP/listener-0") ! Http.Unbind

 

如果成功了lis,lis2就是request handle,可对用户请求response

 

 

绑定后

[INFO] [09/12/2015 14:53:28.084] [mySystem-akka.actor.default-dispatcher-4] [akka://mySystem/user/IO-HTTP/listener-0] Bound to localhost/127.0.0.1:8080
[INFO] [09/12/2015 14:53:28.084] [mySystem-akka.actor.default-dispatcher-7] [akka://mySystem/user/IO-HTTP/listener-1] Bound to localhost/127.0.0.1:8081


还有一个需要注意的是我们的request在"handle"居然也是一个actor,不过要注意的是这个actor是没有注册的,所以他无法远程通过actorSelect选中,这也是说我们的service actor是要保持在同一个jvm下的!

 

 

 类似资料: