I using Spring boot with KafkaListener, and i trying to treat internal exceptions (ConstraintViolationException) but i dont know why the internal try catch are not working
So i have the follow code
@KafkaListener(topics = {"someTopic"},
groupId = "group_id")
public void someTopicTreatment(String message) {
someService.treatmentForSomeTopic(formatMessageToObject(message));
}
In the treatmentForSomeTopic
code i have
public void treatmentForSomeTopic(String message) {
try {
repository.save(message); // this can throw RuntimeException like ConstraintViolationException
} catch (Exception e) { // IGNORED AND DON'T KNOW WHY
boolean treated = tryToTreatError();
if(!treated) {
throw new CanNotTreatException();
}
}
But the problem seem that the Exception is not catched in the treatmentForSomeTopic, is throw direct at the kafka treatment (if i put some try catch in the the method with @KafkaListener i can see the ConstraintViolationException), and i dont understand why.
The stack asked by @tgdavies
org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [id_fkey]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:276)
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:233)
at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:566)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:743)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:711)
at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:654)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:407)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708)
at com.nicearma......TreatmentProcessor$$EnhancerBySpringCGLIB$$a9f88136.treatmentForSomeTopic(<generated>)
at com.nicearma......someTopicTreatment(KafkaConsumer.java:38)