首页 新闻 会员 周边

队列,如何通知生产者?

0
悬赏园豆:100 [待解决问题]

场景:下订单,扣库存。

我的想法是把下订单的任务放到队列里面 一个个进行处理,这样库存在扣减的时候,就不会出错了。

就是生产者与消费者

用户在UI中点击“提交订单”时,把任务放到队列,等待队列处理这个任务的结果,根据结果(成功或者失败)进行页面跳转

 

但是有一个问题:队列处理后,如何把结果通知生产者?

RabbitMQ为例子,有哪位大神可以给出代码.

 

或者这种想法本身就是错误的?

FelixLoeng的主页 FelixLoeng | 菜鸟二级 | 园豆:244
提问于:2015-03-02 11:25
< >
分享
所有回答(4)
0

我不懂你的那个RabbitMQ,但是线程中有处理生产消费问题的解决方法,你可以看看,只需要一个线程等待方法就可以解决。

还有,还有发布订阅方法,也可以解决

代码小兵的成长 | 园豆:303 (菜鸟二级) | 2015-03-02 11:28

您的意思是,把处理结果放到另外一个队列里面。简称结果队列吧

相当于,把订单提交到队列后,代码继续异步去查询 结果队列。

这样理解没错吧?

支持(1) 反对(0) FelixLoeng | 园豆:244 (菜鸟二级) | 2015-03-02 11:35

@啊长: 不是,生产消费问题,是生产者消费者都操作一个队列,如果没有限制队列长度,生产者只管往里面塞数据,而消费者在每次取数据的时候就判断有没有数据存在,如果没有,就持续判断。

当然,更高级点,就是消费者如果发现没有数据的话,就等待。当生产者塞入数据的时候,就发出信息,表示已经有数据了, 那么等待的消费者就可以取数据了,这个就对应了你的问题了

支持(1) 反对(0) 代码小兵的成长 | 园豆:303 (菜鸟二级) | 2015-03-02 11:44
0

通常这种设计就是不用通知生产者的。

 

我把该做的事情完成了,给了下一处理流程,我就不管了,不会等待返回结果的。

爱编程的大叔 | 园豆:30839 (高人七级) | 2015-03-02 17:35
0

楼上正解

GisClub | 园豆:330 (菜鸟二级) | 2015-03-03 15:20
0

嗯 我现在才知道 这种思路本身就是错误的。

这个场景,我放弃使用队列!

taz01 | 园豆:58 (初学一级) | 2015-03-03 15:22

其实也没有错啦。

在放进队列的时候

你可以告诉用户等待处理。

也可以阻止用户操作,然后执行查询最终结果并返回

可以参考支付跟银行支付的交互过程

主要还是看场景是不是合适

 

--途牛旅游网南京本部招java、前端、架构、研发经理感兴趣欢迎联系我或者邮件 wuhuanhong@tuniu.com。

支持(0) 反对(0) 红色壁虎 | 园豆:202 (菜鸟二级) | 2015-03-04 11:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册