2012-07-12 26 views
0

这也许应该是显而易见的我,但我还是想确认下...的Netty NIO客户行为和服务器OrderedMemoryAwareThreadPoolExecutor

客户端的形式:

  1. OIO阻止客户端 - 我期待的回应,以符合要求的顺序。
  2. 使用阻止的NIO客户端读取 - 我期望响应顺序与请求顺序匹配。
  3. 纯NIO异步客户端(无阻塞读取) - 我不希望响应顺序与请求顺序匹配。

首先,请让我知道如果上述不正确。如果是这样,请纠正我。

对于断言3)服务器仍然按照接收每个事件的顺序处理请求,但由于客户端是异步的,发送请求的顺序不是您可以预测的。真正?

所以,它只是看起来响应顺序不同于客户的观点。由于客户端的异步特性,请求被发送到服务器的顺序并不是真正已知的。

我需要确定一下我对这个项目的理解,因为我非常感谢所有帮助。

+0

我最终读了OrderedMemoryAwareThreadPoolExecutor文档,现在我清楚地意识到事件是按顺序处理的。我也写了一个测试来说服自己,毫无疑问在我心中留下了。谢谢。 – 2012-07-13 21:28:33

回答

0

只要您使用TCP,响应顺序必须按照您在服务器中发送它们的顺序进行。使用UDP时,这只是不正确的。

+0

嗨诺曼和谢谢。对不起,我对TCP的了解不如应有。您是否说“必须”,因为TCP协议要求响应必须与请求相对应? – 2012-07-13 10:24:42

+0

请求和响应之间没有关系..我只是说如果你在一边写了一些数据包,如果你使用tcp,他们将在另一边以相同的顺序接收。 – 2012-07-13 10:51:27

+0

确实涵盖了请求方。但是我的问题集中在与请求订单相关的响应顺序上。你能证实我上面提出的三个断言是正确的吗?再次感谢。 – 2012-07-13 11:29:47