~/talk

Let's Go asynchronous

Talkat GoLab 2024 · 2024-11-11..11-13· [go, concurrency]
links:none on file
slides:none on file

Compares synchronous HTTP printing to asynchronous messaging, shows RabbitMQ + Watermill causing an OOM-retry loop where one bad message kills pods repeatedly, and a delivery-ack timeout that makes long jobs run multiple times. Implements a Postgres-backed queue (PGQ) instead of RabbitMQ, adds per-message retry counters and visibility so rotten messages can be identified and quarantined. Publishes benchmarks: ~10k publishes/sec parity, handles hundreds of thousands of messages/day for this use case, with consumer pull latency as the main bottleneck.

AI-written summary · about

  1. 0:00Introduction and background
  2. 2:53From sync to async systems
  3. 7:47Synchronous vs asynchronous trade-offs
  4. 12:04Introducing message queues
  5. 23:18Pitfalls in async production
  6. 27:49Out of memory loops
  7. 30:15PGQ and custom solutions
  8. 35:56When to use async
  9. 37:02Q&A session
~/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.