Java 弹簧靴2和弹簧靴5容器混淆

Java 弹簧靴2和弹簧靴5容器混淆,java,spring,spring-boot,reactive-programming,Java,Spring,Spring Boot,Reactive Programming,我有一个SpringBoot1.4.3项目。最近我提出了一个要求,我必须将日志从服务器发送到我的web应用程序,并将日志打印到web页面上。我知道WebSocket,但我一直在寻找更好的解决方案,我遇到了反应式编程和gRPC Spring在SpringVersion5中支持反应式编程,但我对gRPC和反应式编程感到非常困惑。gRPC具有双向流媒体功能,它构建在Netty之上,提供与将数据从服务器推送到客户端(如反应式编程)相同的功能。所以我应该用哪一个,如果你能澄清我的困惑,那就太好了 另外,如

我有一个SpringBoot1.4.3项目。最近我提出了一个要求,我必须将日志从服务器发送到我的web应用程序,并将日志打印到web页面上。我知道WebSocket,但我一直在寻找更好的解决方案,我遇到了反应式编程和gRPC

Spring在SpringVersion5中支持反应式编程,但我对gRPC和反应式编程感到非常困惑。gRPC具有双向流媒体功能,它构建在Netty之上,提供与将数据从服务器推送到客户端(如反应式编程)相同的功能。所以我应该用哪一个,如果你能澄清我的困惑,那就太好了


另外,如果我转到支持SpringVersion5的SpringBoot2,该项目将在Netty上运行。我的困惑是,我是否必须在不同的容器上运行我的应用程序,比如Jetty server上的普通REST端点和netty server上的反应式API,或者Spring将通过在netty上处理反应式请求和Jetty server上剩余的通用REST API来为我解决这个问题,因为据我所知,Netty不是一个Servlet容器。

反应式编程的一个关键特性是背压,背压是以非阻塞方式实现的。在撰写本文时,gRPC

与客户端和服务器之间的通信相比,反应式编程还有更多的内容。要做到真正的被动,你需要从头到尾的被动。这包括被动访问您的数据存储等。据我所知,这不是gRPC要解决的问题


您不应该尝试将传统的基于Servlet的web框架(如springmvc)与webfluxspring的反应式web框架混合使用。您应该编写一个100%响应式web应用程序或一个100%基于Servlet的web应用程序。

为什么响应式编程可以解决这个问题?只有反应式编程没有添加任何内容。另外,SpringBoot2和Spring5都是最终版本,所以您可能不想在生产中使用它。如果您只想发送日志,将它们存储在可以像数据库一样访问它们的地方,而不是试图重写整个应用程序。@M.Deinum日志数据存储在数据库中,但前端将连接到后端,以便可以从数据库读取日志,并作为连续的数据流推送到前端。持续更新的日志数据也将在同一活动连接期间被读取并推送到客户端。仍然是被动的将不会帮助您。您仍然需要一种机制将其传输到前端,就像服务器发送Web套接字事件一样。这两种方法都可以在无需反应式编程的情况下很好地实现。@M.Deinum正如我所说,在研究反应式编程时,我了解到,在反应式编程中,数据可以作为连续的数据流从服务器推送到客户机,同样可以通过gRPC而不是web套接字来实现。现在,我不知道我应该使用gRPC还是使用反应式编程。同样,只有没有交通工具的反应式编程才能给你带来任何好处。你仍然需要像gRPC这样的机制,正如Andy指出的那样,它不是通过gRPC、Web套接字或服务器发送事件实现的。只是在上面加上反应式编程对你没有帮助。Imho只需在您现在拥有的堆栈中使用服务器发送的Evens来实现它,而不是尝试为这样的需求重新引入一个完整的新堆栈。