【发布时间】:2020-04-18 11:37:29
【问题描述】:
我想听取意见。所以我正在创建一个微服务,它会在客户打开主页时从数据库中获取数据并发送回网站。所以在这种情况下使用 RabbitMQ 会是有益的。我正在考虑在 Spring Boot 微服务的前端和控制器之间添加 RabbitMQ 层。这样就不会错过任何请求。 它是否有助于减少延迟,因为我想要一个非常低的潜在系统
【问题讨论】:
标签: java spring-boot rabbitmq microservices amqp
我想听取意见。所以我正在创建一个微服务,它会在客户打开主页时从数据库中获取数据并发送回网站。所以在这种情况下使用 RabbitMQ 会是有益的。我正在考虑在 Spring Boot 微服务的前端和控制器之间添加 RabbitMQ 层。这样就不会错过任何请求。 它是否有助于减少延迟,因为我想要一个非常低的潜在系统
【问题讨论】:
标签: java spring-boot rabbitmq microservices amqp
那将是对消息队列的滥用。消息用于委托异步操作,当您想要完成某事(通常是长时间执行的操作)但您不想等待结果时。或者通知其他服务发生了一些事情,但您不确定它们是否可用。
使用 MQ 将数据提取到网页中,会产生更多有益的问题。 Web 应用程序,不提供推送机制(没有抓取或 Web 套接字)。网页只能从服务器调用数据,不能从服务器本身向网页推送数据。
建议的解决方案:
如果你想显示来自一个单个数据源的数据,或者一个单一的join可以提供所有数据,那么简单的spring boot MVC就可以了。
如果您使用多个数据源(例如表格),那么您可以使用SPA 应用程序的好处。以最小布局返回主页。然后使用多个 AJAX 调用从数据库中获取数据。这样用户将同时调用所有源,并且调用不会互相阻塞。
如果你想进入微服务,你可以编写一个 node.js 前端应用程序,它会通过 REST api 从你的 spring-boot 应用程序中获取数据。
您的队列可用于通知用户他们的任务过程、状态变化等,但为此您必须使用网络套接字。
更新(消息异步示例):
用户想要从所有表中生成报告,并将其发送到远程文件存储 (S3)。 从用户的角度来看,这将是一个简单的按钮点击。因为 ation 将被委托给另一个服务并异步执行。仅通知用户,他的操作已被请求。 您的服务将发布一条消息,请求生成此报告(由另一个或相同的服务),然后推送到数据文件存储。
该过程完成后(甚至几个小时后),新消息会发布到用户服务或电子邮件,说明报告已完成。
所以用户可以点击生成报告按钮,然后回家。一切完成后,他会收到一封电子邮件通知。
【讨论】: