
之前都是用 gearman 的,现在想问一下 rabbitmq 能不能满足如下场景:
看文档,RabbitMQ 都是单向处理的,即只有上面的 1&2 好像并不能实现 3 这个过程?
如果可以,能否给几个链接地址看下?
1 adrianzhang 2016 年 7 月 28 日 via Android 建立两个 queue |
2 lijinma 2016 年 7 月 28 日 一楼思路正确啊,两个 queue 就解决了吧 |
3 xss OP @adrianzhang @lijinma 两个 queue 会丢失上下文关系,比如我的应用场景是一个 web 页面,那么一个 session 传过来的数据,在第二个 queue 里面如何确定返回给哪个 session? 或者换句话说,如何保证一个用户提交的数据可以得到被正确处理的结果? |
4 iloveyou 2016 年 7 月 28 日 你这就不是异步了 |
5 domty 2016 年 7 月 28 日 3 这种需求本身就不适合消息队列吧。 这种场景为什么不考虑用 RPC 而是用 MQ 呢? |
6 pubby 2016 年 7 月 28 日 via Android 这需求用 gearman 不是挺好的吗 |
8 xss OP |
9 pubby 2016 年 7 月 28 日 非要用的话 保持 gearman 调用不变(因为你的业务需求其实是同步的) 设计一个新的 worker , 功能就是分发任务到 RabbitMQ 队列,再开一个结果队列, worker 里内部维护一个缓冲区,把结果和 task 对应起来返回。 这个 worker 实现起来会稍微复杂,感觉用 go 这种支持协程的写会省力点。 |
10 adrianzhang 2016 年 7 月 28 日 via Android 实践中可考虑工作流与数据分离 session 放在 memcache |
11 rrfeng 2016 年 7 月 28 日 这叫强行用队列吧…… |