Uma solicitação, dois serviços
Pedidos envia uma solicitação por RabbitMQ. Pagamentos recebe, salva uma decisão e envia o resultado. Pedidos atualiza o estado. O player externo descreve cada etapa.
Uma solicitação. Dois serviços.
Mensagem de ida → trabalho separado → resultado de volta
API de Pedidos
HTTP · porta 8080
RabbitMQ
Exchange: roteia pela chave
Fila de solicitações
Pagamentos
Simulador · porta 8081
Exchange + fila de resultados ←
Banco pedidos
Pedido + solicitação S1
Banco pagamentos
Decisão única para S1
S1
OK
ABERTO
Ready: 0
Unacked: 0
DESLIGADO
01 · Pedido criado
2 cafés × R$ 18,90 = R$ 37,80. Nenhuma solicitação enviada.
EM_PAGAMENTO
Ready: 0
Unacked: 0
DESLIGADO
02 · Solicitação S1 registrada
Itens protegidos enquanto o resultado não chega.
EM_PAGAMENTO
Ready: 1
Unacked: 0
DESLIGADO
03 · Publicação confirmada → HTTP 202
A mensagem chegou à fila. Isso ainda não aprova o pagamento.
EM_PAGAMENTO
Ready: 1
Unacked: 0
DESLIGADO
04 · A mensagem pode esperar
Pagamentos desligado. RabbitMQ continua guardando a solicitação.
EM_PAGAMENTO
Ready: 0
Unacked: 1
LIGADO
05 · Entrega recebida, ainda sem ack
Pagamentos processa S1 e guarda sua decisão no próprio banco.
EM_PAGAMENTO
Ready: 0
Unacked: 0
LIGADO
06 · Resultado publicado
A decisão volta em outra mensagem. Solicitação original confirmada.
PAGO
Ready: 0
Unacked: 0
LIGADO
07 · Resultado aplicado em Pedidos
Estado e conclusão salvos juntos. Agora a entrega é confirmada.
PAGO
Ready: 0
Unacked: 0
LIGADO
08 · S1 chega novamente
O registro persistido reconhece a chave e preserva o mesmo efeito.