Beanstalkd in a container is four lines

Beanstalkd is a queue and nothing else — no persistence by default, no clustering, no management UI — which makes it about the smallest thing that is genuinely a broker rather than a table.

services:
  queue:
    image: schickling/beanstalkd
    command: ["-b", "/data", "-f", "1000"]
    volumes:
      - beanstalk:/data

volumes:
  beanstalk:

-b turns on the binlog, without which a restart loses every job in the tube; -f sets how often it is fsynced in milliseconds, and the trade between durability and throughput is that one number. For a worker pool of two or three processes this is enough, and the operational surface is a single binary with no configuration file. The moment you want routing, fanout or a dead-letter mechanism, it is the wrong tool and no amount of application code fixes that.