如何控制Scala远程actor的TCP_NODELAY设置?

时间:2009-10-08 20:49:33

标签: sockets scala tcp actor

我正在使用Scala的远程演员,但是往返时间(即使是一个微不足道的消息)也是80ms,可能是由于底层套接字没有禁用TCP / IP Nagle算法(也称为TCP_NODELAY),或者至少具有一定Java RMI经验的人告诉我。

我在客户端做的所有事情都是为了获得远程演员的链接

val server=select(Node("127.0.0.1",12111),'server)

有没有办法获得底层套接字并在其上调用java.net.Socket.setTcpNoDelay()

1 个答案:

答案 0 :(得分:3)

如果你需要在底层Socket上调用setTcpNoDelay()而不修改Scala源代码,有两种方法可以做到。

  1. 实现自己的SocketImplFactory:这个解决方案很糟糕,因为你需要实现自己的SocketImpl,这不是简单的,你不能只包装现有的SocketImpl,因为它不是一个公共API。我在这里所说的一切都归咎于首先设计SocketImplFactory的人。

  2. 使用AOP

  3. BTW,我认为解决此问题的最佳方法是修改Scala远程actor代码并提交补丁。