Java 我应该使用OS套接字缓冲区作为消息队列吗?

Java 我应该使用OS套接字缓冲区作为消息队列吗?,java,networking,nio,Java,Networking,Nio,这个问题涉及一个Java应用程序的设计,用于从几十个UDP套接字读取和处理大量数据,但我认为它与其他语言和环境相关 我见过像上面描述的那样的网络应用程序有专门的线程,用于尽快从套接字缓冲区读取数据,在应用程序内部对其重新排队,然后在单独的线程中处理数据 在处理线程准备好接收下一条数据之前,将数据保留在套接字缓冲区中是否有任何错误?快速读取数据并在应用程序内部重新查询有什么好处吗 如果处理逻辑不够快,缓冲区将填满。但是,如果处理逻辑太慢,无法处理入站数据,那么数据在哪里排队似乎无关紧要。如果入站数

这个问题涉及一个Java应用程序的设计,用于从几十个UDP套接字读取和处理大量数据,但我认为它与其他语言和环境相关

我见过像上面描述的那样的网络应用程序有专门的线程,用于尽快从套接字缓冲区读取数据,在应用程序内部对其重新排队,然后在单独的线程中处理数据

在处理线程准备好接收下一条数据之前,将数据保留在套接字缓冲区中是否有任何错误?快速读取数据并在应用程序内部重新查询有什么好处吗


如果处理逻辑不够快,缓冲区将填满。但是,如果处理逻辑太慢,无法处理入站数据,那么数据在哪里排队似乎无关紧要。如果入站数据突然出现峰值,套接字缓冲区应足够大以处理它。

网络堆栈中接收到的UDP数据包的缓冲区大小是有限的。如果缓冲区已满,一些数据包将丢失

如果处理UDP数据包的软件知道可能需要一段时间才能处理数据包,则有必要尽快读取数据包,释放网络堆栈缓冲区,而是为数据包实现自己的缓冲区或队列,在其中可以缓存数据包,直到处理资源实际可用