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]}
}
}
}