Java Springboot中的RabbitMQ

Java Springboot中的RabbitMQ,java,spring-boot,rabbitmq,microservices,amqp,Java,Spring Boot,Rabbitmq,Microservices,Amqp,我想接受建议。因此,我正在创建一个微型服务,它将从数据库获取数据,并在客户打开主页时发送回网站。因此,在这种情况下,使用RabbitMQ是否有益。我正在考虑在spring boot microservice的前端和控制器之间添加RabbitMQ层。这样就不会错过任何请求。 它是否有助于减少延迟,因为我想要一个非常低的潜在系统,这将是对消息队列的误用。消息用于委托异步操作,当您希望完成某些操作时,通常是一个长时间执行的操作,但不希望等待结果。或者通知其他服务,发生了一些事情,但您不确定它们是否可用

我想接受建议。因此,我正在创建一个微型服务,它将从数据库获取数据,并在客户打开主页时发送回网站。因此,在这种情况下,使用RabbitMQ是否有益。我正在考虑在spring boot microservice的前端和控制器之间添加RabbitMQ层。这样就不会错过任何请求。
它是否有助于减少延迟,因为我想要一个非常低的潜在系统,这将是对消息队列的误用。消息用于委托异步操作,当您希望完成某些操作时,通常是一个长时间执行的操作,但不希望等待结果。或者通知其他服务,发生了一些事情,但您不确定它们是否可用

使用MQ将数据提取到网页中,将产生更多有益的问题。 Web应用程序不提供没有爬行或Web套接字的推送机制。网页只能从服务器调用数据,不能从服务器本身将数据推送到网页

提议的解决办法:

如果您希望显示来自单个数据源的数据,或者单个连接可以提供所有数据,那么简单的spring boot MVC就可以了

如果您使用多个数据源,例如表,那么您可以利用应用程序的优点。返回具有最小布局的主页。然后使用多个AJAX调用从数据库中获取数据。这样,用户将同时调用所有源,并且调用不会相互阻塞

如果你想进入微服务领域,你可以编写一个node.js前端应用程序,通过RESTAPI从你的spring boot应用程序中获取数据

您的队列可用于通知用户其任务流程、状态更改等,但为此,您必须使用web套接字

更新消息异步示例:

用户希望从所有表生成报告,并将其发送到远程文件存储S3。 从user perspactive,只需单击一个简单的按钮。因为该服务将被委托给另一个服务并异步执行。仅通知用户已请求其操作。 您的服务将发布一条消息,请求另一个或同一个服务生成此报告,然后推送到数据文件存储

即使在几个小时后,流程完成后,新消息也会发布到用户服务或电子邮件,表示报告已完成


所以用户可以点击genrate报告按钮,然后回家。当一切都完成时,他将收到一封电子邮件通知。

看看这个答案是否可以。你可以举一个例子——当你想做某件事时,消息用于委托异步操作,通常是一个长时间执行的操作,但是您不想等待结果,因此您建议前端直接命中控制器端点是实现上述用例AD1的方法。与处理大型文件一样,这将更新数据库中的多个表。Ad2。对通过这种方法,您可以创建多个服务,为您的端点提供数据。因此,假设我在网站上的点击率约为每秒10万次,那么有没有办法优化您提到的正常方法。或者这取决于我如何优化db查询,基本上是在服务级别方法中进行优化,这些方法将获取和发送回数据。如果你每秒有10k个呼叫,那么一个应用程序是不够的。您需要横向扩展它-在顶部添加更多应用程序和负载平衡器。它仍然比消息队列好。有了这个scane,一个kubernetes/蜂箱,AWS beanstock可能会有所帮助。至于优化——每一步都很重要,比如使用反应式方法、执行高效的SQL查询等等。这可以通过多种方式进行优化。