~/talk

Leveraging GenStage to Implement Your Own Event Bus

name:Eli Kim
links:none on file
slides:none on file

Frame.io replaces RabbitMQ/Kafka with a homegrown GenStage-based Event Bus that broadcasts standardized event structs to ~10–12 consumers, processes about 1.5M events/day (peaks ~2.2M), and keeps API p99 at ~101ms. Implementation uses a GenStage producer with broadcast dispatcher, experimented from fire-and-forget to Task.async_stream to GenStage to a consumer_supervisor spawning per-event workers (final benchmark ~300ms for mocked sleeps). System adds retries and failure logs but lacks durable persistence yet; webhooks were added by creating a new consumer.

AI-written summary · about

  1. 0:00Intro
  2. 1:47Agenda
  3. 2:05Whats an Event Bus
  4. 2:22Message Your Event
  5. 2:46Event Bus Example
  6. 3:46Event Bus Pros
  7. 4:43Event Bus Cons
  8. 5:20Code Snippet
  9. 6:48Context Function
  10. 7:31Notify
  11. 7:54Event
  12. 8:53Base Consumer
  13. 9:18Requirements
  14. 9:40First Example
  15. 12:44What is GenStage
  16. 13:11The Event Bus
  17. 13:53Consumer Changes
  18. 14:08GenStage Performance
  19. 14:45BetterAST
  20. 15:26ConsumerSupervisor
  21. 15:41Demo
  22. 17:43Event Bus Performance
  23. 18:18Webhooks
  24. 18:39Unit Testing
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.