我有一个php代码,接受任意客户端的请求,现在想在后端加上redis的队列将消息传递到别的处理模块。大致结构如下clienta\clientb—broker.php->redis->worker.phpclientc/.../1,broker.php如何获取后端worker.php的处理结果(是引入一个响应队列么)2,如果引入响应队列,broker.php如何将不同的结果对应返回给abc...客户端3,如果php无法实现这种场景,有其它什么建议方法没,给点参考资料,thanks!
2 回答
Smart猫小萌
TA贡献1911条经验 获得超7个赞
redis只是提供一个高性能的、原子操作的分布式队列实现。具体的业务还是得需要你自己定制。你的需求实际上是一个变形的生产者-消费者实现。对于此类需求,主要是将请求和实际的处理过程解耦,一般都是采取异步的方式来通知请求方,这跟用不用redis其实没有多大的关系。一般的实现方法是你需要将用户的请求封装成一个Task,然后将这个Task再push到redis队列,然后后端的worker.php完全可以多进程、多线程的并发处理Task并将处理结果回调给请求方。这里唯一麻烦点的就是这个Task的设计,需要能够包含请求信息(请求内容,请求方标识等等).
添加回答
举报
0/150
提交
取消