2017-04-19 127 views
1

以下是我的春天控制器之一的代碼。在這個我需要存儲一些數據在多線程postgres數據庫,所以我沒有等到它將數據保存到數據庫,我可以發送響應回到被調用的API。我可以如何實現這一目標?多線程彈簧啓動控制器

//billingLogService.saveBillingLogDetails(Object); 
if (!Util.isNull(personId) && !Util.isNull(personConnectionData)) { 
    return new Callable<Map<Long, PersonConnectionTo>>() { 
     @Override 
     public Map<Long, PersonConnectionTo> call() throws Exception { 
      Map<Long, PersonConnectionTo> connectionTextMap = 
       profileService.getconnectionTextForFocusCompany(focusCompanyId, personId, personConnectionData); 
      return connectionTextMap; 
     } 
    }; 
} 
+0

你可以看看使用Spring的'@ Async'註解。 – CollinD

回答

0

其中一種方法是將整個邏輯(您想在單獨的線程中運行)放到某個服務類的方法中。
然後
1.用@Service或類似的註釋類。
2. @Async
3.使用@EnableAsync
標註方法,這應該足夠了

+0

獲取異常警告9071 --- [cTaskExecutor-2] ohengine.jdbc.spi.SqlExceptionHelper:SQL錯誤:0,SQLState:42883 錯誤9071 --- [cTaskExecutor-2] ohengine.jdbc.spi.SqlExceptionHelper錯誤:運算符不存在:bigint = bytea 提示:沒有運算符匹配給定的名稱和參數類型。您可能需要添加顯式類型轉換。 Position:123 ERROR 9071 --- [cTaskExecutor-2] .a.i.SimpleAsyncUncaughtExceptionHandler:調用異步方法'public void com.equilar.bsp.service.impl.BillingLogServiceImpl.saveConnectionText(java.lang.Long)'時發生意外的錯誤。 – vk1

+0

這與你的代碼有些相關,ant完全與運行在單獨的線程中有關 – pvpkiran