我的系统,有一部分的业务是“查询其它系统的订单处理结果,然后更新我的订单状态”。
目前问了两个“前辈”,都说写定时任务,去数据库里扫表,拿出处理中的订单,去挨个轮询状态。
我一直以为这种操作(查其它系统,修改自己订单的操作。)应该扔给消息队列,作为异步任务去处理。
但是前辈说,消息队列,不安全,会丢失,那么我想请教两个问题。
1.消息队列不安全,会丢失,是指什么?是指载体,类似rabbitmq和redis数据是放在内存的?难倒不可以持久化么?还是其它原因?
2.是不是相比于“查询补单”这样的业务,将结果通知给其它系统,这种业务更适合使用消息队列的异步任务(rabbitmq+celery)。
首先确认“其他系统”是否可以针对你们业务进行开发。
如果不能开发,建议你的系统定时轮询。
如果可以开发,两个系统用消息队列或者其他接口形式沟通都可以。
具体问题具体分析