ElasticMQ logo

ElasticMQ

Lightweight SQS‑compatible message queue for testing and development

ElasticMQ provides an in‑memory, actor‑based message queue with an Amazon SQS‑compatible REST API, runnable as a standalone JAR, Docker container, or embedded library, plus optional UI and persistence options.

ElasticMQ banner

Overview

Highlights

SQS‑compatible REST interface for seamless integration
Runs standalone, via Docker, or embedded in Scala/Java apps
Optional UI for real‑time queue statistics
Configurable persistence for queues, metadata, and messages (HOCON, SQL)

Pros

  • Zero external dependencies, runs on Java 8+
  • Fast in‑memory processing, fully asynchronous
  • Easy to embed for unit and integration tests
  • Supports FIFO and dead‑letter queues

Considerations

  • Not a full replacement for Amazon SQS in production
  • Implements only a subset of the SQS API
  • Persistence requires additional configuration
  • No built‑in clustering or high‑availability features

Managed products teams compare with

When teams consider ElasticMQ, these hosted platforms usually appear on the same shortlist.

Amazon SQS logo

Amazon SQS

Fully managed message queuing service for decoupling and scaling distributed applications

Azure Service Bus logo

Azure Service Bus

Fully managed enterprise message broker for decoupling applications via message queues and publish/subscribe topics

Google Pub/Sub logo

Google Pub/Sub

Global messaging service for event ingestion and fan‑out

Looking for a hosted option? These are the services engineering teams benchmark against before choosing open source.

Fit guide

Great for

  • Developers writing integration tests that need SQS semantics
  • Teams building microservices locally without AWS access
  • Projects requiring a lightweight queue with optional FIFO support
  • Applications that can tolerate occasional duplicate deliveries

Not ideal when

  • High‑throughput production workloads requiring guaranteed durability
  • Environments needing native AWS scaling and regional features
  • Use cases demanding built‑in security or IAM integration
  • Scenarios requiring multi‑node clustering out of the box

How teams use it

Local development of SQS‑based services

Run ElasticMQ locally to test message handling without AWS costs.

CI/CD pipeline integration tests

Spin up a Docker container in CI to verify queue interactions before deployment.

Embedded queue for Scala applications

Include ElasticMQ as a library to simulate SQS during unit tests.

Testing FIFO and dead‑letter behavior

Configure FIFO queues and dead‑letter settings to validate idempotent processing logic.

Tech snapshot

Scala94%
TypeScript4%
Python1%
Java1%
HTML1%
Dockerfile1%

Tags

scalaawssqs-interfaceamazon-sqsmessagingelasticmqaws-sqs

Frequently asked questions

Do I need an AWS account to use ElasticMQ?

No, ElasticMQ runs locally or in Docker and implements a compatible subset of the SQS API.

Which SQS operations are supported?

ElasticMQ supports core query actions such as CreateQueue, SendMessage, ReceiveMessage, DeleteMessage, and FIFO‑related parameters; advanced features like message attributes are limited.

How can I persist queues and messages?

Persistence can be enabled via HOCON configuration for queue metadata or an SQL storage (H2 by default) for both queues and messages.

Can I run ElasticMQ in a container?

Yes, a Docker image is provided; the server binds to port 9324 by default and can be configured through environment variables or config files.

Is there a UI to monitor queues?

An optional statistics UI is available on a separate port (default 9325) showing real‑time queue metrics.

Project at a glance

Active
Stars
2,793
Watchers
2,793
Forks
202
LicenseApache-2.0
Repo age14 years old
Last commit4 days ago
Primary languageScala

Last synced yesterday