【问题标题】:Akka input stream handlingAkka 输入流处理
【发布时间】:2016-08-23 15:34:11
【问题描述】:

我正在使用 java 在 akka/play 框架上构建一个系统。我需要建立一个与外部系统建立 SSH 连接并在用户交互范围内维护会话的演员。

我找到了支持 java SSH 连接的 Java JCraft/JSch 库

  1. 有没有办法将 JSch 输入流包装为事件驱动的输入流,因此当数据到达时会触发 onmessage(data) 事件。
  2. 我的其他选择是让工作线程从位于 actor 范围内的流中读取/等待数据,这是一个好的模式吗,我担心工作线程会显着降低可伸缩性
  3. 我找到了 akka 套接字支持,但不是专门的 SSH,是否已经有这样的库?

【问题讨论】:

    标签: java ssh playframework akka inputstream


    【解决方案1】:

    Jsch 通道支持写入给定的 OutputStream

    channel.setOutputStream(stream)
    

    作为解决方案,我所做的是编写一个自定义 OutputStream,在 write(buffer) 上通过 actorRef.tell(buffer, ActorRef.noSender());

    因此无需外螺纹。

    【讨论】:

    • 你应该确保,考虑到actor的多线程特性,你传递的缓冲区实际上是安全的。也许您应该传递缓冲区的副本,而不是缓冲区本身(即:如果您的 actorRef 在 JSCH 写入输出流的同时收到您的消息怎么办?您是否保证 same i> 缓冲区没有被重用?)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-19
    • 1970-01-01
    • 2018-07-08
    • 1970-01-01
    • 2019-06-25
    相关资源
    最近更新 更多