This repo contains guidelines, best practices, and patterns as we learn more about developing with, deploying, running, and monitoring a Message Driven Infrastructure (MDI).
This is a work in progress.
0.0.1-alpha
- learn
- question
- prototype
- avoid premature optimization
- slow and correct is better than fast and wrong
- iterative development
- exercise full toolchain
- Github + Travis + Jenkins + TBD for monitoring
- exercise full toolchain
- persistent
- durable
- direct
- topic
component | example values |
---|---|
app |
rstar |
service |
xip_validation , file_identify , file_virus_scan , file_chz , file_video_xcode ... |
message type |
request , result , status |
service | role | routing key |
---|---|---|
bag validation | producer | rstar.xip_validate.request |
video transcoding | producer | rstar.video_xcode.request |
file identification | producer | rstar.file_identify.request |
bag validation | consumer | rstar.xip_validate.result |
video transcoding | consumer | rstar.video_xcode.result |
file identification | consumer | rstar.file_identify.result |
service | role | binding key |
---|---|---|
event logger | consumer | rstar.*.result |
jobs database | consumer | rstar.# |
bag validation | consumer | rstar.xip_validate.request |
video transcoding | consumer | rstar.video_xcode.request |
file identification | consumer | rstar.file_identify.request |
- Producer publishes a request message to a direct exchange
using the appropriate consumer routing key - Message broker routes message to matching consumer queue(s)
- Consumer receives message from queue
- Consumer performs task
- Consumer publishes result to topic exchange
- Consumer
ACK
s message
- subscribe to direct exchange
- Consumers
- subscribe to a direct exchange
- prefetch = 1
- must send results to topic exchange
- must
ACK
message after work complete