Scala 无法将消息返回给HttpService参与者
我正在学习喷雾和阿克卡。已经构建了一个简单的喷洒路由应用程序,其中一个路由存根为-Scala 无法将消息返回给HttpService参与者,scala,akka,spray,Scala,Akka,Spray,我正在学习喷雾和阿克卡。已经构建了一个简单的喷洒路由应用程序,其中一个路由存根为- path("blog" / LongNumber) { blogId => respondWithMediaType(MediaTypes.`application/json`) { get { request => BlogFetchActor ! Get(blogId) } } } 在上面的代码中,我在喷洒路由定义中(在实现HttpS
path("blog" / LongNumber) {
blogId =>
respondWithMediaType(MediaTypes.`application/json`) {
get {
request => BlogFetchActor ! Get(blogId)
}
}
}
在上面的代码中,我在喷洒路由定义中(在实现HttpService的类中)向请求中具有ID(blogId)的另一个参与者发送一条消息。BlogFetchActor应该从数据库中获取数据并响应发送者。这是我的代码如下-
def receive: Receive = LoggingReceive {
case Get(id: Long) => {
log.debug("Retrieving blog with id %d".format(id))
sender ! ReturnBlog(get(id))
}
}
来自路由的参与者消息正在到达我的BlogFetchActor。我的BlogFetchActor也完成了从数据库获取数据的工作。但是,当我尝试将响应发送回发送方HttpService,即ReturnBlog消息时,它不起作用。消息以死信结尾,我在日志中看到了下面的内容-
来自Actor的消息[in.bharthwrites.BlogFetchActor$ReturnBlog][akka://on-spray-can/user/blog-service/blog#1301907662]扮演[akka://on-spray-can/deadLetters]没有交货
为什么回复给发件人的消息不起作用?我做错了什么?我还可以如何实现这一点?我试着阅读Spray文档和ScalaDoc,但没能找出问题所在。我不够熟练,无法阅读喷洒代码并找出原因。。。提前感谢如果您想在完成请求之前询问其他参与者,您应该使用(
?
,在下面的示例中)
您也可以考虑返回一个<代码>选项[ReutsBlog ] 而不是<代码> ReestBlog < /Cuff>允许喷发自动生成<代码> 404 < /代码>状态响应,如果不存在这样的博客。
path(“blog”/LongNumber){
blogId=>
respondWithMediaType(MediaTypes.`application/json`){
得到{
完成{(BlogFetchActor?Get(blogId)).mapTo[ReturnBlog]}
}
}
}
如果您想在完成请求之前询问其他参与者,您应该使用(?
,在下面的示例中)
您也可以考虑返回一个<代码>选项[ReutsBlog ] 而不是<代码> ReestBlog < /Cuff>允许喷发自动生成<代码> 404 < /代码>状态响应,如果不存在这样的博客。
path(“blog”/LongNumber){
blogId=>
respondWithMediaType(MediaTypes.`application/json`){
得到{
完成{(BlogFetchActor?Get(blogId)).mapTo[ReturnBlog]}
}
}
}