2014-09-25 84 views
2

我建立的与Java阿卡/播放架构的系统。我需要建立一个演员谁做了SSH连接到外部系统&维护用户交互的跨度会话..阿卡输入流处理

我发现,支持JAVA SSH连接

  1. 就是Java JCraft/JSch库有一种方法可以将JSch输入流打包为事件驱动的输入流,因此当数据到达时会触发onmessage(data)事件。
  2. 其他选项我有一个工作线程读取/等待数据从生活在演员的范围内的流,这是一个很好的模式,我担心工作线程会显着降低可扩展性
  3. 我发现akka套接字的支持,但不具体SSH,有没有这样的图书馆?

回答

0

Jsch通道支持写入给定的OutputStream

channel.setOutputStream(stream) 

作为解决方案我所做的就是编写自定义的OutputStream上write(buffer)通过 actorRef.tell(通过缓冲区的内容,以给定的演员缓冲区,ActorRef.noSender());

从而消除了外螺纹的需求。

+0

你应该确保,给演员的多线程特性,你的缓冲区的传球其实是安全的。也许你应该通过缓冲区的副本,而不是缓冲区本身(即:如果你的'actorRef'同时JSCH被写入的OutputStream得到你的消息,你保证的是,*同*缓冲区不重用?)。 – GPI 2016-08-23 07:43:06