message-queue-service

Functional complete and local hermetic messaging queue with thread and process concurrency safety for Amazon SQS mocking

Background

Message queues are a ubiquitous mechanism for achieving horizontal scalability. However, many production message services (e.g., Amazon’s SQS) do not come with an offline implementation suitable for local development and testing. The context of this project is to resolve this deficiency by designing a simple message-queue API that supports three implementations:

  • an in-memory queue, suitable for same-JVM producers and consumers;

  • a file-based queue, suitable for same-host producers and consumers, but potentially different JVMs; and

  • an adapter for a production queue service, such as SQS.

The intended usage is that application components be written to use queues via a common interface, and injected with an instance suitable for the environment in which that component is running (development, testing, integration-testing, staging, production, etc).

Behavior

  • multiplicity A queue supports many producers and many consumers.

  • delivery A queue strives to deliver each message exactly once to exactly one consumer, but guarantees at-least once delivery (it can re-deliver a message to a consumer, or deliver a message to multiple consumers, in rare cases).

  • order A queue strives to deliver messages in FIFO order, but makes no guarantee about delivery order.

  • reliability When a consumer receives a message, it is not removed from the queue. Instead, it is temporarily suppressed (becomes “invisible”). If the consumer that received the message does not subsequently delete it within within a timeout period (the “visibility timeout”), the message automatically becomes visible at the head of the queue again, ready to be delivered to another consumer.

Related Repositories

ServiceBusMQManager

ServiceBusMQManager

A Service Bus Message Queue Manager ...

amazon-sqs-java-messaging-lib

amazon-sqs-java-messaging-lib

This Amazon SQS Java Messaging Library holds the Java Message Service compatible classes, that are used for communicating with Amazon Simple Queue Service. ...

sensu-plugins-rabbitmq

sensu-plugins-rabbitmq

This plugin provides native RabbitMQ instrumentation for monitoring and metrics collection, including: service health, message, consumer, and queue health/metrics via `rabbitmq_management`, and more. ...

mercury-jms

mercury-jms

A electron desktop application that provides a UI to send Java Message Service messages to ActiveMQ queue or topic with custom Header fields. ...

sensu-plugins-rabbitmq

sensu-plugins-rabbitmq

This plugin provides native RabbitMQ instrumentation for monitoring and metrics collection, including: service health, message, consumer, and queue health/metrics via `rabbitmq_management`, and more. ...