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