Redis如何匹配往返请求响应

Redis如何匹配往返请求响应,redis,Redis,我有一个http服务器应用程序,它接收来自http客户端的请求,并将它们放入Redis列表进行处理。侦听此列表的另一个进程将拾取请求并对其进行处理,最后将响应放入另一个Redis队列,供HTTP服务器使用 顺序如下: (1) Http客户端==>Web应用程序 (2) Web App==>Redis请求队列(列表数据结构) (3) 处理器==>使用多个线程来处理请求 (4) 处理器==>放入Redis响应队列(列表数据结构) (5) Web应用==>必须从响应que中选择响应并交付给HTTP客户

我有一个http服务器应用程序,它接收来自http客户端的请求,并将它们放入Redis列表进行处理。侦听此列表的另一个进程将拾取请求并对其进行处理,最后将响应放入另一个Redis队列,供HTTP服务器使用

顺序如下:

(1) Http客户端==>Web应用程序
(2) Web App==>Redis请求队列(列表数据结构)
(3) 处理器==>使用多个线程来处理请求
(4) 处理器==>放入Redis响应队列(列表数据结构)
(5) Web应用==>必须从响应que中选择响应并交付给HTTP客户端

考虑到上述场景,如果HTTP服务器上的多个线程正在将MSG排队到Redis,是否有任何已建立的模式来确保正确拾取响应并使用正确的会话将其发送回HTTP客户端

我计划对生产者/消费者使用Redis(或者可能是RabbitMQ或ZeroMQ),因为我希望横向扩展并配置分布在多个节点上的多个消费者


感谢您为我指出了一个合理的方法。

web应用程序是否等待处理器产生结果?如果是这样的话,我觉得它的可扩展性不太好。你是如何将客户端套接字传递给处理器的?@SergioTulentsev我同意。但由于它是一个HTTP客户端,我相信它必须等待处理器产生结果。有没有更好的方法,@TheRealBill将通过HTTP套接字cud b传递一个选项。我仍处于设计思考阶段。如果我创建了一个可以在多个线程(tomcat工作线程)上运行的servlet,那么这些线程就无法跟踪来自处理器的响应。或者,当响应准备就绪时,或者我应该考虑使用Web套接字来将消息推回到HTTP客户端吗?每个响应都可以用“txn_id”来标识?还有别的办法吗?