在演员之间发送Akka HttpEntity

时间:2016-12-22 02:59:07

标签: java scala akka akka-http akka-cluster

在akka-http中,HttpRequestHttpResponse主要是不可变对象,但HttpEntity主体(Source除外)。

向另一个演员(特别是远程演员)发送请求,响应或独奏实体是否安全,还是需要一些预防措施?

1 个答案:

答案 0 :(得分:0)

如评论中所述:由于套接字限制,将HttpEntity发送到远程Actor不太可能。进一步的证据可以在the documentation(强调他们的)中找到:

  

重要:消息可以是任何类型的对象,但必须是   不可改变的。 Scala不能强制实现不变性,所以必须这样做   约定。

但是,来自ByteString的{​​{1}}值与Source本身没有相同的限制,因为ByteString是不可变的。你可以简单地在本地Source ActorSystem上排空Source并将akka-http值发送给你的远程Actor。

作为一个例子,假设您想使用Actor来大写基于utf-8的HttpEntity中的所有字符。你可以设置你的演员:

ByteString

然后你的akka​​-http看起来像:

class UpperActor extends Actor {
  override def receive : Receive = {
    case b : ByteString => sender() ! b.toString.toUpperCase
  }
}
相关问题