DEV Community

Cover image for Built a distributed job scheduler for .NET
Ahmet Buğra Kösen
Ahmet Buğra Kösen

Posted on

Built a distributed job scheduler for .NET

Been working on this for a while, sharing in case it's useful to someone.

Milvaion is a distributed job scheduler for .NET. The scheduler runs as its own service and pushes jobs onto a queue (RabbitMQ). Workers pull from the queue and run them. Workers are stateless, so you can scale or restart them freely, and if one dies the rest keep going.

Jobs are managed at runtime from a web UI, so adding or changing one doesn't need a redeploy. The UI also shows runs, logs, failures, retries and allow you to access many other features.

Writing a worker is a nuget package and one interface to implement, and workers auto-register with the scheduler.

There's also an MCP server if you want to query it from Claude/Cursor/Copilot (things like "why has daily-invoice-export been failing since Tuesday", it reads the logs and answers).

Stack is .NET 10, Postgres, Redis and RabbitMQ.

Repo: https://github.com/Milvasoft/milvaion
Docs: https://portal.milvasoft.com/docs/1.0.1/open-source-libs/milvaion/milvaion-doc-guide

This started as a hobby project and is evolving into an open-source platform. Some parts are still rough in spots. Testing and giving feedback is very important to me.

Top comments (0)