文檔states噴霧能夠處理分塊響應,但我找不到任何示例。還有就是我幼稚的做法:使用噴霧實例分塊響應處理
object Main extends App {
implicit val system = ActorSystem()
import system.dispatcher
val log = Logging(system, getClass)
val ioBridge = IOExtension(system).ioBridge()
val httpClient = system.actorOf(Props(new HttpClient(ioBridge)))
val conduit = system.actorOf(
props = Props(new HttpConduit(httpClient, "localhost", 3000)),
name = "http-conduit"
)
val pipeline = HttpConduit.sendReceive(conduit)
val response = pipeline(
HttpRequest(
method = GET,
uri = "/output.cgi.xml"
)
)
response onComplete {
case Success(a) =>
log.info("Success: " + a)
system.shutdown()
case Failure(error) =>
log.error(error, "Failure")
system.shutdown()
}
}
我給自己定response-chunk-aggregation-limit = 0
,仍然沒有任何反應。
你能否給我提供閱讀分塊響應的例子?
更新
我已經重寫我的代碼如下:
object Main extends App {
implicit val system = ActorSystem()
import system.dispatcher
val log = Logging(system, getClass)
val ioBridge = IOExtension(system).ioBridge()
val httpClient = system.actorOf(Props(new HttpClient(ioBridge)))
actor(new Act {
httpClient ! Connect(new InetSocketAddress("localhost", 3000))
become {
case Connected(_) =>
log.info("connected")
sender ! HttpRequest(GET, "/output.cgi.xml")
case Closed(handle, reason) =>
log.info("closed: " + reason)
system.shutdown()
case ChunkedResponseStart(res) =>
log.info("start: " + res)
case MessageChunk(body, ext) =>
log.info("chunk: " + body)
case ChunkedMessageEnd(ext, trailer) =>
log.info("end: " + ext)
case m =>
log.info("received unknown message " + m)
system.shutdown()
}
})
}
現在我收到closed: ProtocolError(Aggregated response entity greater than configured limit of 1048576 bytes)
連接建立之後。
我application.conf
spray.can {
client {
response-chunk-aggregation-limit = 0
}
}
WDYM與「沒有任何事情發生」?你是說你永遠不會得到結果的查詢? – jrudolph 2013-05-02 11:52:22
你使用哪種版本的噴霧劑? – jrudolph 2013-05-02 11:53:35
我正在使用1.1-M7。我的意思是我不知道如何以分塊方式處理響應。目前'onComplete'收到彙總迴應。 – lambdas 2013-05-02 12:03:30