我的java应用程序必须向套接字服务器发送消息(多线程)。应用程序每秒可以发送大约100-200条消息。
我想知道哪一种方法更好?
- 打开一个客户端套接字并从所有线程通过这个套接字发送消息。缺点:连接失败时需要处理重连接逻辑,重连接过程中可能会丢失很多消息。线程安全,阻塞??
- 为每个线程创建一个新的客户端套接字连接并在发送后关闭它。缺点:即使我关闭套接字,端口也会等待到TIME_WAIT时间。
我建议3。:为每个线程打开一个套接字,并重用线程(例如通过线程池)。然后处理线程内部的重连接,或者只是正确地处理它并创建一个新的。这样可以避免阻塞和同步问题
每秒100-200条消息并不多。我不会每次都重新连接,因为这很贵。如果你重复使用你的连接,它会快得多。
如果您担心丢失消息,您可以发送一批消息或一次发送一条消息,然后等待收到消息的服务器的确认。通过这种方式,您仍然可以每秒发送数千条消息。