çağrılırken hemen geri dönmez Denetleyicileri (@EnableWebMvc), services (@service ve @ComponentScan) yapılandırmak için yaylı ek açıklamalar kullanıyorum. Hizmetlerimden birinde @Async ile açıklamalı bir yöntem var ve ayrıca benim config sınıfımda @EnableAsync ekledim. MVC denetleyicisinden biri @Async ile açıklamalı servis yöntemini çağırdığında, denetleyicinin, hizmet yönteminin tamamlanmasını beklemeden hemen dönmesini beklerim. Bununla değil. Hizmet yönteminde kesme noktasını ayarladığımda, aslında ayrı bir iş parçacığı içinde çalışmakta olduğunu görüyorum; yani, stacktrace aşağıda yapılandırdığım gibi SimpleAsyncTaskExecutor'ı kullandığını gösteriyor. İşte Spring MVC denetleyicisi, @Async yöntemi
benim yapılandırma sınıfında açıklama@Configuration
@EnableWebMvc
@EnableScheduling
@ComponentScan(basePackages = "com.mypackage")
@EnableAsync
public class WebApplicationConfig extends WebMvcConfigurerAdapter implements AsyncConfigurer {
...
...
@Override
public Executor getAsyncExecutor() {
SimpleAsyncTaskExecutor executor = new SimpleAsyncTaskExecutor("SimpleExecutor-");
executor.setConcurrencyLimit(props.getIntegerProperty(SysProps.EMAIL_SENDER_CONCURRENT_THREAD_LIMIT));
return executor;
}
benziyor Ve işte benim MVC denetleyicisi yöntemi
@Autowired
private EmailService emailService;
@ResponseStatus(value = HttpStatus.CREATED)
@RequestMapping(value = "/asset/{assetId}/slideshare/email", method = RequestMethod.POST, produces = JSON_UTF8)
@ResponseBody
@ApiResponseObject
public Link createAndEmailSlideShareLink(@PathVariable final String assetId,
@RequestParam(value = "email") final String email,
@RequestParam(value = "message", required = false) final String message,
final HttpServletRequest request) {
Link link = linkService.createLink()
emailService.sendSlideShareAssetEmail(user,link...
return link;
}
benziyor Ve servis yöntem bu
@Async
public void sendSlideShareAssetEmail(User user, String email, String msg, String link, Asset asset) {
benziyor olmasıdır
MVC denetleyicisi neden hemen geri dönmüyor?
Denetleyici sınıfını gönderin. Dönüş değeri nedir? – chrylis
@chrylis Yayını denetleyici sınıfındaki kodla güncelledim. Lütfen kontrol ediniz –
Denetleyici yönteminin içeriğini aslında göndermediniz. – chrylis