I built a tiny message queue in Rust to learn the language - turned out surprisingly useful

425 points nebjak 44 comments

Hey r/rust!

After 15 years as a backend engineer, I finally decided to properly learn Rust by building something real: TLQ (Tiny Little Queue) - a message queue that does way less than RabbitMQ, and that's the point.

The problem I was solving: Setting up RabbitMQ for a small side project felt like bringing a forklift to move a chair. I just wanted to send messages between services without having to read the documentation for an hour.

So I built TLQ:

  • One command to run: docker run -p 1337:1337 nebojsa/tlq
  • No config files
  • No authentication setup
  • No persistence to configure
  • Just add messages, get messages, done

Think of it like SQLite but for message queues - perfect for development and small projects, definitely not for running Netflix.

What surprised me about Rust:

  • It actually IS as fast as everyone says
  • The compiler errors genuinely helped me write better code
  • Once it compiles, it usually just works
  • The community crates (like Axum for web stuff) are really solid

6 months later: It has client libraries for Rust, Python, Node.js, and Go. Using it myself for prototyping microservices without the usual setup headache.

Code: https://github.com/skyaktech/tlq

Blog post about why I built it: https://nebjak.dev/blog/why-i-built-tlq-tiny-little-queue/

Website: https://tinylittlequeue.app/

Would love to hear if anyone else built something "intentionally simple" while learning Rust. Sometimes constraints make the best learning projects.

P.S. - Yes, the name "Tiny Little Queue" is redundant. That's intentional 😄