Я использую пружину 3.0.5 и с гибернацией.
- Перехватчик работает.
- Отправить идентификатор домена в очередь jms.
- Потребитель получает его и ищет домен, но работает быстрее, чем фиксация базы данных, и я получаю ноль.
Как быть уверенным, что перехватчик будет вызываться после фиксации db?
appCtx.xml
<tx:annotation-driven order="10" />
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<aop:aspectj-autoproxy />
<bean id="domainProducerHandler" depends-on="domainEventService"
class="org.test.service.DomainProducerHandler" factory-method="aspectOf">
<property name="domainEventService" ref="domainEventService" />
<property name="order" value="1" />
</bean>
===================service class=====================
@SendDomainEvent
@Transactional
public ProtoMessage sendDonation(String aa) {
Domain domainObj = new Domain();
domainRepository.saveAndFlush(domainObj);
return domain;
}
==================interceptor class===================**
@AfterReturning(
pointcut="@annotation(org.test.service.SendDomainEvent)",
returning="retVal")
public void processDomainReturn(Object retVal) {
....
try {
domainEventService.publishToQueue(endDonationSuccessEvent);
} catch (Exception e) {
log.error("error during send endDonationSuccessEvent: " + e);
}
}
Класс перехватчика реализует упорядоченный интерфейс. Я установил для параметра порядка значение tx: порядок, основанный на аннотациях = 10, но он не работает.