文章预览
阿里妹导读 作者认为其实是没有最佳实践的,大多数时候要根据自己的业务情况做取舍。同时,真的发生问题的时候,事前做好容错设计才是确保稳定性的银弹。 遇到的问题 做技术的同学,尤其是业务开发同学都是经常和消息打交道的,大家也都喜欢研究像MetaQ这种消息中间件的一些实现代码。作为一曾经的业务开发同学(目前在负责稳定性),深知要在业务团队写好发消息的代码,也绝非易事。 曾经我是交易订单团队的一名开发,我遇到了下面的一个问题: try { transactionTemplate.start(); // 位置1 orderManager.createOrder(order); // 位置2 messageProducer.send(buildOrderCreatedMsg(order)); // 发送订单创建成功的消息。 transactionTemplate.commit(); // 位置3 } catch ( Exception e) { transactionTemplate.rollback(); } 我需要发送订单创建成功的消息,目前我是在位置2上面发送
………………………………