Você pode usar duas listas para esse tipo de padrão distribuído. Estou sugerindo isso principalmente por causa da natureza do PubSub de "atirar e esquecer" sem garantir a entrega. Eu diria que no seu caso, você não quer isso.
Aqui está o fluxo sugerido - primeiro você precisará configurar dois "ouvintes" de bloqueio:
- Server1:
BRPOP completed
- Server2:
BRPOP requests
Então, quando um usuário faz login:
- Server1:
LPUSH requests data
- Server2:desbloqueia, processa dados,
LPUSH completed data
e volte para bloquear pop - Server1:desbloqueia, faz qualquer coisa, volta a bloquear pop