之前都是用 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 日
这叫强行用队列吧……
|