Considering your requirements and the context of your use case, KubeMQ could be a suitable option for your message queue solution. KubeMQ is a self-hosted, Kubernetes-native message broker that offers a wide range of features that align well with your needs:
Reliable Message Storage: KubeMQ can store unprocessed messages reliably, even in the event of a shutdown or reboot. This ensures that no messages are lost, and processing can resume once the system is back online.
Exclusive Message Processing: KubeMQ supports exclusive message processing. This means that a job can only be processed by a single subscriber, which prevents duplicate processing and ensures that each job is handled exactly once.
Multiple Queues: You can set up multiple queues in KubeMQ, each with its own set of subscribers. This allows you to logically separate different types of jobs and have different subscribers processing them.
Scalability and Load Distribution: KubeMQ is designed to work in distributed environments. You can easily scale the number of subscribers and distribute the load across multiple machines to handle processing of your self-contained jobs.
Simplicity: KubeMQ is relatively easy to use and integrates well with Kubernetes environments. It provides APIs for different programming languages, making it accessible to a wide range of developers.
Advanced Features: KubeMQ offers various messaging patterns beyond simple queues, such as publish-subscribe, request-response, and more. This flexibility can be useful if your requirements evolve over time.
Self-Contained Setup: KubeMQ can be deployed as a Docker container or using Kubernetes, allowing you to manage and scale your messaging infrastructure as needed.
Given your criteria, KubeMQ provides a well-rounded solution that meets your requirements for reliable message storage, exclusive processing, multiple queues, and scalability. It offers these features in a user-friendly way, making it a strong candidate for your message queue solution.