Your understanding is correct. The recoverer operates in its own transaction when using REQUIRES_NEW
, which is why you see the behavior you described. If you want to maintain a clear separation between the listener's transaction and the error handling logic, using REQUIRES_NEW
is a good approach.