上海网站制作,微信小程序注册方法,青海省西宁市住房城乡建设厅网站,西陆网系统环境#xff1a;LinuxPHP 7.3ThinkPHP 6先说一下业务场景#xff1a;订单创建成功之后#xff0c;每一笔订单都需要进行统计及其他业务处理。如何及时发现处理失败的订单#xff0c;然后进行补单处理。订单所产生佣金的处理。要解决以上问题#xff0c;最简单的办法就…系统环境LinuxPHP 7.3ThinkPHP 6先说一下业务场景订单创建成功之后每一笔订单都需要进行统计及其他业务处理。如何及时发现处理失败的订单然后进行补单处理。订单所产生佣金的处理。要解决以上问题最简单的办法就是通过脚本定时去扫表处理。但是扫表存在一些问题长时间与数据库保持连接进行查询操作消耗服务器资源。在数据量较大或者延时较高的情况下不能及时处理完会影响其他业务。想请教一下这个场景适合用什么方案去解决回答1.订单创建成功之后每一笔订单都需要进行统计及其他业务处理。A:使用队列异步处理。及时性不高的话可以使用延迟队列2.如何及时发现处理失败的订单然后进行补单处理。A:在逻辑层处理失败的时候可以起一个队列去补单如果需要强制保证成功可以加ACK机制。如果要保证及时性可以多加进程处理队列。队列就是专门干这个事情的1.不建议由系统扫描处理业务流程控制不好会容易引发并发问题导致佣金多返库存多扣。。2.最好是能直观的反馈出来这里报错了并由技术去进行处理。。否则的话下次或者下下次还是会出现问题有可能导致数据错乱成为一团乱麻反而更难维护。。3.不要想着靠程序去处理自身的bug如果有程序不依靠人类去处理bug的一天那将是人工智能取代人类的一天。。消息队列redis rabbitmq kafka 都是成熟的队列