Home > database >  How to deal with thread in background processing java spring boot?
How to deal with thread in background processing java spring boot?

Time:02-05

I want to download file after query but the time is too long, so my company said I should let the process in background.

For that I create thread when user call method, it will generate file and send to email of customer.

But the problem is about my thread, I also test function for sendemaildownload (it also includes the function which I use to query), I'm quite sure this problem from the way I create the thread.

This is what it says to me when I'm logging the error on creating the thread:

Exception in thread "Nathan-Transportation1" java.lang.IllegalStateException: No thread-bound request found: Are you referring to request attributes outside of an actual web request, or processing a request outside of the originally receiving thread? If you are actually operating within a web request and still receive this message, your code is probably running outside of DispatcherServlet: In this case, use RequestContextListener or RequestContextFilter to expose the current request.

Is there any way to fix it? I want to understand why it happend when I create my thread pool.

enter image description here

CodePudding user response:

This error message indicates that you are attempting to access request-scoped data (for example, request attributes) outside of the context of an HTTP request.

You can try the following solutions to this problem:

  1. To expose the current request and make it accessible to your code, use a RequestContextListener or RequestContextFilter.
  2. To execute tasks in a background thread, use Spring's TaskExecutor interface, which will handle the necessary context management for you.

Here are some links that may be of interest to you:

CodePudding user response:

Try using @Async annotation. For more information see here

  • Related