管理Java客户端 - 服务器应用程序中的响应消息

时间:2013-10-30 18:31:05

标签: java multithreading design-patterns client-server message-queue

我正在研究Java客户端 - 服务器应用程序。

客户端发送消息序列(消息可以是不同类型,我有头),并侦听回复。我有2个线程,一个用于传输,一个用于收据。 所以我需要处理回复,如果出现错误或者回复没有到达,例如我可以尝试再次发送消息。

我的问题是..有没有可以帮助我的java模式?

我想像单个事务一样处理发送和相对repliy,但请注意,我不需要进行同步通信。我在TX线程中按序列发送所有消息,并等待RX线程上的回复。

我想到了调解员模式,但我不知道这是不是正确的方式。

由于

1 个答案:

答案 0 :(得分:0)

如果问题纯粹是关于传输协议,我会看看NAK。 http://en.wikipedia.org/wiki/NAK_(protocol_message)

我已经实现了一个名为JCast的协议,它通过多播发送文件。文件被分解为编号的小片段。接收客户端然后回复它没有得到的任何丢失的片段(这些是NAK)。然后服务器只会重新发送NAK的片段。

编辑:NAK优于ACK的好处是服务器可以发送它所需的所有数据包而无需等待ACK。由于现在网络得到了很大改善,大多数数据包都会到达。那些没有到达的少数就会被重新发送。