Spring boot 春天是不是“春天”呢;调用自己的控制器;多线程?

Spring boot 春天是不是“春天”呢;调用自己的控制器;多线程?,spring-boot,Spring Boot,我有一个SpringBoot应用程序,它从云消息队列中提取消息并将其放回云数据库。我意识到我的程序是单线程的(我不使用请求映射,只使用pull、process、put-to-db)。我想要Spring处理并发性问题。那么我可以创建一个dispatcher函数,用@RequestMapping调用应用程序中的控制器吗 @RestController @请求映射(“/test”) 公共类网关控制器{ @请求映射(“/service”) public void InvokeService(…){…}

我有一个SpringBoot应用程序,它从云消息队列中提取消息并将其放回云数据库。我意识到我的程序是单线程的(我不使用请求映射,只使用pull、process、put-to-db)。我想要Spring处理并发性问题。那么我可以创建一个dispatcher函数,用@RequestMapping调用应用程序中的控制器吗

@RestController
@请求映射(“/test”)
公共类网关控制器{
@请求映射(“/service”)
public void InvokeService(…){…}
}
我需要多线程调用其他服务进行响应,我不希望它阻止其他服务。如果我收到10条消息,我希望它呼叫/测试/服务。。。有10个线程处理它们

我的问题是:

  • Spring会使控制器成为多线程吗
  • 如何调用自己的控制器?向url发送请求?(我不需要控制器的响应,只需让控制器调用服务,将响应放入CAN上的db中即可)

  • RequestMapping
    是MVC的东西-用于发出http请求。是的,它在引擎盖下使用tomcat

    如果您将
    RestController
    注入到类中,它不会发出任何HTTP请求,您将只作为常规bean调用控制器。如果您在一个线程中使用消息,它将不会变成多线程来回答您的第一个问题

    当然,您可以创建HTTP请求,但坦率地说,这是错误的。所以不要这样做。这在某种程度上回答了您的第二个问题:)

    现在,从概念上讲,如果您的微服务充当消费者和生产者,并处理队列,那么并不是所有的微服务都必须通过HTTP进行访问

    要在多线程环境中工作,请执行以下操作:

  • 检查是否可以以多线程方式使用消息。也许“云消息队列”的客户端提供了多线程配置(线程池或其他)

  • 如果不可能,请自己创建一个线程池执行器,并在收到每条消息后将处理任务提交到此线程池。这将使处理逻辑以受线程池大小和线程池配置限制的并行级别进行多线程处理


  • 我用代码编辑问题。你的意思是如果我调用/测试/服务,它不会变成多线程?我需要多线程,因为我需要呼叫其他服务进行响应,我不希望它阻止其他服务。如果我收到10条消息,我希望它调用不同的/测试/服务。。。有10个线程在处理它们。不,不会。若您有一个从队列读取的线程,那个么即使您使用某种http调用而不是直接调用http,它仍然是一个阻塞调用。。。为什么要处理rest控制器?正如我所建议的-创建消息使用者的线程池并并行地使用消息。。。。