基于 Redis BLPOP 的 RPC 方案

BLPOP 是 LPOP 的组塞版本,在异步任务中,可以利用这个特性来实现 RPC。

# App
def query
  # Enqueue task...

  @redis.blpop(task_id, TIMEOUT)
end

# Worker
def received
  @redis.rpush(task_id, response)
end