-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
EPIC: Dashboard / API Capabilities #36
Comments
Yes! This feature is indeed an epic and should be approached in modular packages. I propose two potential strategies:
using LinkDotNet.NCronJob;
var builder = WebApplication.CreateBuilder(args);
// Add NCronJob to the service container.
builder.Services.AddNCronJob(n => n
.AddJob<PrintHelloWorldJob>(p =>
p.WithCronExpression("*/2 * * * *"))
);
var app = builder.Build();
// Integrate NCronJob UI middleware.
app.UseJobsDashboard();
...
app.Run();
using LinkDotNet.NCronJob;
var builder = WebApplication.CreateBuilder(args);
// Register NCronJob.
builder.Services
.AddNCronJob(n =>
n.AddJob<PrintHelloWorldJob>(p =>
p.WithCronExpression("*/2 * * * *"))
)
.TryJoinJobsControlCenter(builder.Configuration);
var app = builder.Build();
app.Run(); The necessary configuration in appsettings.json might look like this: {
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"NCronJob": {
"ControlCenter": {
"Url": "http://localhost:7177/hub",
"ApiKey": "1234567890"
}
}
} Obviously the second approach requires more effort, especially in terms of communication strategy and infrastructure. We can implement either option or both options (centralized hub more of a long term goal).
Absolutely, we need to start breaking the project into a core and then the separate extension components that rely on core. Keeping the core library lean makes it easier to maintain. |
I do like the second approach as it gives a USP for this library. |
Jobs Commands Management branch More details here: #25 (comment) |
This is more of an epic and has to be stripped down to some working packages.
Once we are going in the direction of #25 (state-management) it might make sense to offer a dashboard that allows some more monitoring capabilities.
Initially, that can be read-only, but we might want to allow adding instant jobs via the dashboard (that triggers an API endpoint we have to build anyway).
I am leaning towards an extension package rather than pushing more and more features into the core library itself.
The text was updated successfully, but these errors were encountered: