Почему мой асинхронный метод ожидания заканчивался, чтобы дать ответJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Почему мой асинхронный метод ожидания заканчивался, чтобы дать ответ

Сообщение Anonymous »

Я сталкиваюсь с проблемой, когда мой запрос на сохранение основной базы данных ждет моего метода @async вместо возврата ответа. После сохранения в аспекте базы данных опубликовать событие My @Async @eventlistner Метод запускается, но основной поток подождите, пока мой асинхрон завершает работу. Мне нужно основное, прежде чем метод @Async завершить работу < /p>

Код: Выделить всё

@EnableAsync
@Configuration
public class AsyncConfiguration {

@Bean
public Executor asyncTaskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(4);
executor.setMaxPoolSize(4);
executor.setQueueCapacity(100);
executor.setThreadNamePrefix("AsyncTaskThread-");
executor.initialize();

return executor;
}
}
< /code>
Метод, где мы сохраняем в дБ < /p>
@Override
@Transactional
public OffsettingEntity createDraftOffset(OffsettingEntity draftOffset) {
return offsettingRepository.save(draftOffset);
}
< /code>
@Slf4j
@Component
@RequiredArgsConstructor
public class OffsettingEventListener {
private final OffsettingOutboxService offsettingOutboxService;

@Async("asyncTaskExecutor")
@TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT)
public void postSave(OffsettingRegisteredEvent event) {
UUID uniqueKey = UUID.randomUUID();
MDC.put("offsetId", String.valueOf(event.offsetId()));
MDC.put("uniqueKey", String.valueOf(uniqueKey));
MDC.put("eventType", "OffsettingRegisteredEvent");

try {

RequestContext.setUniqueKey(uniqueKey);

offsettingOutboxService.createMessageToRo(event);
} catch (Exception ex) {
log.error("error: {}", event.offsetId(), ex);
} finally {
RequestContext.clear();
}
}
}
< /code>
@Aspect
@Component
@RequiredArgsConstructor
public class AspectOffsettingRepository {

private final ApplicationEventPublisher publisher;
private static final String STATUS_FOR_MESSAGE = "REGISTERED";

@AfterReturning(
pointcut = "execution(* service.repository.impl.OffsettingJpaRepository.save(..))",
returning = "result"
)
public void afterSave(OffsettingEntity result) {
handleAfterSave(result);
}

@AfterReturning(
pointcut = "execution(* service.repository.impl.OffsettingJpaRepository.saveAndFlush(..))",
returning = "result"
)
public void afterSaveAndFlush(OffsettingEntity result) {
handleAfterSave(result);
}

private void handleAfterSave(OffsettingEntity entity) {
if (entity.getStatus() != null && STATUS_FOR_MESSAGE.equals(entity.getStatus())) {
publisher.publishEvent(new OffsettingRegisteredEvent(
entity.getOffsetId(),
entity.getCreatedBy(),
entity.getFirstPartnerId().toString()
));
}
}
}
< /code>
P.S. My async method works in AsyncTaskThread-1 not main thread
My trheads
http-nio-8080-exec-1 < /code>
 AsyncTaskThread-1


Подробнее здесь: https://stackoverflow.com/questions/797 ... a-response
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Почему мой асинхронный метод ожидания заканчивался, чтобы дать ответ
    Anonymous » » в форуме JAVA
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Как безопасно вызвать асинхронный метод в C# без ожидания
    Anonymous » » в форуме C#
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Как безопасно вызвать асинхронный метод в C# без ожидания
    Anonymous » » в форуме C#
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Огонь и забыть, используя задачу или просто вызывая асинхронный метод без ожидания
    Anonymous » » в форуме C#
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Асинхронный — структура ожидания
    Anonymous » » в форуме Python
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»