В моем приложении у меня есть 2 @Async
методов: один для целей аудита, а другой для обновления некоторых карт в 2 совершенно разных фасоли, вызывается из разных бобов, но в то же время. Один из прослушивателей аудита и другой из контроллера.Как я могу @Aync работать на 2 разных потоках для 2 разных методов весной.?
Моя проблема заключается в том, что оба они работают в одном потоке, то есть сначала выполняется аудит, а затем в том же потоке создаются эти карты. Таким образом, если аудит выдает какое-то исключение, карты не будут созданы или карты выдают ошибку, аудит не будет записан.
Есть ли способ, я могу использовать эти два метода в разных потоках Async.
Method1:
@Async(value="myExecutor")
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void regenerateZoneMapAsync(DemandSource ds) {
System.out.println("\n\n********************Current Thread in Async Class*****************" + Thread
.currentThread());
regenerateZmFilesByDs(ds);
System.out.println("\n\n*********Current Thread********" + Thread.currentThread());
}
Method2:
@Async(value="myExecutor")
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void callAudit(DemandSource ds) {
System.out.println("\n\n************Current Thread in Audit Class*********" + Thread
.currentThread());
callAudit(ds);
System.out.println("\n\n***********Current Thread********" + Thread.currentThread());
}
Println был добавлен для моей собственной ясности, чтобы знать, какой поток был выполнен. Я новичок как в многопоточности, так и в Spring.
Моего класса конфигурационных
<task:annotation-driven executor="myExecutor"/>
<task:executor id="myExecutor" pool-size="5"/>
После добавления выше конфигураций с @Async(value="myExecutor")
моим кодом перестал работать вообще, Под этим я имею в виду, боб, в котором regenerateZoneMapAsync()
был определен, не вызывается из моего вызывающего боба, некоторые возникает проблема с прокси-сервером.
Edit:
Одна вещь, которая приходит на мой взгляд, это может быть возможно, что аудит нить завершает обработку и отправить поток обратно в бассейн, а затем карта выбирает один и тот же поток и начинает его обработку.
В принципе, я хочу, чтобы в случае если аудит выдает какую-либо ошибку, а всплывающее обновление карты должно продолжаться.
Добавить конфигурацию на ваш вопрос. –
какая часть конфигурации вы хотите точно? – dgupta3091
Конфигурация конфигурации асинхронизации и пула потоков. –