现在微服务做得越来越多了,头就越来月疼了。
1 2 3 4 5 6 7 8 |
@Transactional(rollbackFor = Exception.class) public boolean insertSelectiveHeader(SupplierBillPO header) { .... int i = billPOMapper.insertSelective(header); //延迟发送mq消息 service.delaySendMQ(header); return i > 0; } |
改造后我们不再使用发送mq的service服务,而是用
1 2 3 4 5 6 7 8 9 10 11 12 |
org.springframework.context.ApplicationEventPublisher; @Autowired private ApplicationEventPublisher publisher; @Transactional(rollbackFor = Exception.class) public int insertSelectiveHeader(SupplierBillPO header) { .... int i = billPOMapper.insertSelective(header); publisher.publishEvent(header); return i; } |
publishEvent的入参可以是任何自定义对象。
然后去建一个Bean类:
1 2 3 4 5 6 7 8 |
@Component public class TransactionalMessageListener { @TransactionalEventListener(fallbackExecution = true) public void handleSupplierBillPush(SupplierBillPO data){ service.sendImmediately(data); } } |
这个类首先要是一个bean,不然没有人去监听我们的事件啊。
转载请注明:刘召考的博客 » Spring 事务提交成功事件监听