Skip to content

Concept

exitxhu edited this page Dec 26, 2023 · 2 revisions

What is going on inside?

QueDuler generalizes any work flows into some pre-determined flows which are capsulated in its main package.
you only need to implement some interfaces and properly configure them once in your startup.
here a simple example will be provided.

Startup - bootstrapping

in simplest form services.AddQueduler(a => a.AddJobAssemblies(typeof(Program)));
you only need to provide any assembly that contains your job classes.

Plug-ins

QueDuler is completely modular, so in the Core package, there is only logic.
to actually run the jobs you need to add other packages.
you can build your plug-in for your preferred tool(will be explained further).
switching between the same duty plug-ins would be pain-free, with only several lines of code and without consequences.

there are several ready-to-use and Production-tested packages.

If you need scheduling add one of these:

wraps around the official HangFier.
doing so you need to pass HangFier config down the line like these:

services.AddQueduler(a => a.AddJobAssemblies(typeof(Program)) .AddHangfireScheduler(services, config => config.SetDataCompatibilityLevel(CompatibilityLevel.Version_170) .UseSimpleAssemblyNameTypeSerializer() .UseRecommendedSerializerSettings() .UsePostgreSqlStorage(Configuration.GetConnectionString(hangFireConnection), new PostgreSqlStorageOptions { QueuePollInterval = TimeSpan.FromSeconds(30), InvisibilityTimeout = TimeSpan.FromHours(8) `<br>` }), op => { op.Queues = new[] { "default", JoberStaticMembers.Jober }; }));

a simple in-memory scheduling module.

If you need to use queueing, pub-sub, triggering events, etc. you can use this:

wraps around confluent kafka client for DotNet.

ISchedulableJob

any class