Skip to content

Repositório de exemplo que aplicação GO que utiliza filas com penalidades de espera.

Notifications You must be signed in to change notification settings

leojasmim/delayed-exchange

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

delayed-exchange

Repositório de exemplo que aplicação GO que utiliza filas com penalidades de espera.

Introdução

Neste toy-problem temos uma exchange pocdelayed.work.exchange do tipo TOPIC com 3 filas de trabalho vinculadas por uma routingKey: (pocdelayed.work.a.queue -> work.a; pocdelayed.work.b.queue -> work.b; pocdelayed.work.C.queue -> work.c).

Temos um exchange de penalidades pocdelayed.wait.exchange do tipo TOPIC que irá receber mensagens de todas as filas com uma determinado tempo de espera. Através da flag x-dead-letter-exchange configuramos que todas as mensagens na fila de espera retornão para uma determinada exchange, neste caso a de trabalho pocdelayed.work.exchange após a expiração do TTL

delayed-exchange-diagram

Passo-a-passo

  1. Execute o projeto em delayed-exchange/consumer para consumir das 3 filas distintas: go run main.go a Para consumir da fila A; go run main.go b Para consumir da fila B; go run main.go c Para consumir da fila C.
  2. Execute o projeto em delayed-exchange/publisher para publicar uma mensagem na fila A

Resultado esperado

Quando ocorrer a execução dos consumidores o resultado esperado é que a mensagem siga o seguinte ciclo: FILA A -> ESPERA -> FILA B -> ESPERA -> FILA C -> ESPERA

Quando a mensagem for penalizada pela fila A ela aguardará 15s para ser republicada em B. Quando penalizada em B demorará 20s para ser republicada em C e quando for penalizada em C aguardará 10s para ser republicada em A

About

Repositório de exemplo que aplicação GO que utiliza filas com penalidades de espera.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages