harryunchained/machine-gun

By harryunchained

Updated 2 months ago

Schema-driven load testing for RabbitMQ & Kafka. 100k+ msg/s with a visual flow editor.

Image
Message queues
Developer tools
Monitoring & observability
0

3.0K

harryunchained/machine-gun repository overview

Machine Gun

A high-performance visual load generator for RabbitMQ and Kafka.

RabbitMQ Apache Kafka NestJS Angular

Machine Gun is a tool for stress-testing messaging infrastructure through a clean, node-based flow editor. It allows you to design data generation pipelines, trigger high-throughput bursts, and monitor transport health in real-time.

Features

  • Flow Editor: Build complex data generation pipelines visually.
  • High Performance:
    • Multi-TCP Connection Pooling: Distributed I/O across multiple TCP sockets to eliminate RabbitMQ head-of-line blocking.
    • Adaptive Backpressure: Dynamic generation throttling linked to broker saturation levels.
  • Transports: Native support for RabbitMQ (AMQP) and Kafka.
  • Monitoring: Real-time throughput and system status dashboard with adaptive telemetry.
  • Schema Builder: Define JSON structures using Faker.js for dynamic, realistic data generation.

🐳 Run Everything Together (Unified Image)

The simplest way to start Machine Gun is using the Unified Image, which contains both the visual dashboard (UI) and the backend engine in a single container.

docker run -d \
  --name machine-gun \
  -p 3000:3000 \
  -e RABBIT=amqp://guest:guest@your-rabbitmq:5672 \
  -e KAFKA=your-kafka:9092 \
  harryunchained/machine-gun:latest

Access the dashboard at: http://localhost:3000


📦 Distributed Run (Separate Components)

For production-style deployments or custom scaling, you can run the components individually.

1. Start the Backend

The engine that handles flow logic and message publishing.

docker run -d \
  --name machine-gun-backend \
  -p 3000:3000 \
  -e RABBIT=amqp://guest:guest@your-rabbitmq:5672 \
  -e KAFKA=your-kafka:9092 \
  harryunchained/machine-gun:backend
2. Start the Frontend

The visual dashboard that connects to the backend.

docker run -d \
  --name machine-gun-frontend \
  -p 80:80 \
  harryunchained/machine-gun:frontend
3. Start the Test Consumer (Optional)

A helper to verify that messages are arriving correctly at your infrastructure.

docker run -d \
  --name machine-gun-test-consumer \
  -p 3001:3001 \
  -e RABBIT=amqp://guest:guest@your-rabbitmq:5672 \
  -e KAFKA=your-kafka:9092 \
  harryunchained/machine-gun:test-consumer

🛠️ Development Setup (Compose)

If you have the repository cloned, use Docker Compose for the full local environment:

docker compose up -d

Tag summary

Content type

Image

Digest

sha256:728f203f4

Size

17.9 MB

Last updated

2 months ago

docker pull harryunchained/machine-gun:frontend