Mongo Queueing - .NET Core message queue with MongoDB
Open Source Message Queueing
Official Homepage of the open source package AllQuiet.MongoQueueing. The package aims to provide a super easy to use mechanism to enqueue messages and process them in a .NET Core application.
Sources
Source code is available at GitHub
Download
Binary package is available to download at NuGet
Quick Example
Motivation
Learn more about why we created an open source project in our blog post.
Use Cases
- You have a website where users can register. You want to send out a double-opt-in email asynchronously after registering.
- You want to send out a reminder email after 24h after registering.
- You want to call a third party service that can fail (your own network, downtime of service etc.). You want to retry the call in case of failure.
- You have other long running tasks that should be executed after a user's operation.
Characteristics
- Supports high availability out of the box. You can run as many processes as you like. MongoDB's atomic operations ensure that messages are processed only once.
- Guarantees FIFO dequeueing but cannot guarantee order of execution of your messages when running multiple processes.
- Supports different queues, so you can have a high priority queue.
- Supports scheduling of messages (define the time when a message should be dequeued)
What about RabbitMQ, ZeroMQ, Kafka etc?
MongoQueueing was created during the development of the All Quiet incident escalation platform. We wanted to keep our tech-stack as simple as possible. Since we were using MongoDB as a database, we didn't want to introduce more moving parts in our infrastructure.
It's not a replacement for near-realtime queueing systems like RabbitMQ. Neither does it provide pub/sub functionalities. It's just really a dead simple mechanism to execute tasks asynchronously in your .NET Core application. Don't use it to create your fancy distributed mircoservice architecture. Use it for the above mentioned use cases.
Resources
Compare
© 2024 All Quiet GmbH. All rights reserved.