2014-09-25 94 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