这个问题是关于我应该为该任务使用哪些工具的一般性建议,并可能向我介绍一些相关的教程。
我有一个Spring Boot Web应用程序,该应用程序在操作过程中会将日志消息生成到数据库中。此REST应用程序正在制作一个JavaScript管理工具,它的一项功能是实时显示日志消息。意思是,当用户在日志显示页面上时,他应该看到新的日志消息出现而无需刷新页面。
我的问题:
我并不是真正在寻找解决方案的定期查询,而是服务器在出现解决方案时推送数据。
感谢任何建议和代码示例。
答案 0 :(得分:3)
将日志存储在数据库中通常不是一个好选择,除非您使用能够处理大量写请求的数据库,例如Apache Cassandra。但是,从数据库流数据并不是最直观的事情。
现代的替代方法是使用消息传递系统(例如Apache Kafka)将日志从生产系统流式传输到多个订阅系统。您可以通过多种方式实现这一目标。例如,对于从Spring Boot应用程序中流式传输日志,可以使用特殊的log4j附加程序(请参见here和示例here)。为了能够在Web浏览器中实时显示日志,您将需要另一个后端系统,该系统将从Kafka主题接收日志记录,并通过websocket将它们转发到JavaScript Web客户端,最有可能使用发布者/订阅者模型。
此外,您可以考虑使用服务器发送的事件(SSE)代替websocket。因为您只有一个单向消息流(日志是从后端系统流到浏览器中的javascript客户端,而没有相反的方式),所以SSE可以替代Websockets是一个不错的选择。 Websocket比SSE更难操作,并且通常在后端使用更多资源。与往常一样,您需要在权衡之间进行选择(请参见here)。