zb-client-bootstrap
0.0.1-preview006
See the version list below for details.
dotnet add package zb-client-bootstrap --version 0.0.1-preview006
NuGet\Install-Package zb-client-bootstrap -Version 0.0.1-preview006
<PackageReference Include="zb-client-bootstrap" Version="0.0.1-preview006" />
paket add zb-client-bootstrap --version 0.0.1-preview006
#r "nuget: zb-client-bootstrap, 0.0.1-preview006"
// Install zb-client-bootstrap as a Cake Addin #addin nuget:?package=zb-client-bootstrap&version=0.0.1-preview006&prerelease // Install zb-client-bootstrap as a Cake Tool #tool nuget:?package=zb-client-bootstrap&version=0.0.1-preview006&prerelease
Boostrap extension for the C# Zeebe client
This project is an extension of the C# Zeebe client project. Zeebe Job handlers are automaticly recognized and boostrapped via a .Net HostedService.
Requirements
- .Net 5.0
- latest C# Zeebe client release
- latest Zeebe release
How to use
The Zeebe C# client boostrap extensions is available via nuget (https://www.nuget.org/packages/zb-client-bootstrap/).
Ze examples for more information.
Quick start
All classes which implement IJobHandler<T>
or IAsyncJobHandler<T>
are automaticly found and boostrapped when you register this boostrap project with the IServiceCollection
extension method BoostrapZeebe
.
The BoostrapZeebe
method has two parameters:
ZeebeBootstrapOptions
via Configuration, Action delegate or both.- An array with assembly filters, only assemblies which start with one of the filters will be scanned for job handlers.
Appsettings configuration
ConfigureServices((hostContext, services) => {
services.BootstrapZeebe(
hostContext.Configuration.GetSection("ZeebeBootstrap"),
"SimpleExample"
);
})
appsettings.json
{
"ZeebeBootstrap": {
"Client": {
"GatewayAddress": "0.0.0.0:26500"
},
"Worker": {
"MaxJobsActive": 1,
"TimeoutInMilliseconds": 500,
"PollIntervalInMilliseconds": 10000,
"PollingTimeoutInMilliseconds": 30000
}
}
}
Delegate configuration
ConfigureServices((hostContext, services) => {
services.BootstrapZeebe(
options => {
options => {
options.Client = new ClientOptions() {
GatewayAddress = "0.0.0.0:26500"
};
options.Worker = new WorkerOptions()
{
MaxJobsActive = 1,
TimeoutInMilliseconds = 10000,
PollIntervalInMilliseconds = 30000,
PollingTimeoutInMilliseconds = 1000
};
}
},
"SimpleExample"
);
})
Job
The job is an implementation of AbstractJob
. A job can be configured via optional attributes. Job types must be unique.
[JobType("SimpleJobV2")]
[WorkerName("SimpleWorker")]
[MaxJobsActive(2)]
[Timeout(500)]
[PollInterval(10000)]
[PollingTimeout(500)]
class SimpleJob : AbstractJob
{
public SimpleJob(IJob job) : base(job)
{ }
}
Job handler
The job handler is an implementation of IJobHandler<T>
or IAsyncJobHandler<T>
. A job can be configured via optional attributes. Job handlers are automaticly added to the DI container, therefore you can use dependency injection inside the job handlers.
[ServiceLifetime(ServiceLifetime.Singleton)]
class SimpleJobHandler : IAsyncJobHandler<SimpleJob>
{
public Task HandleJob(IJobClient client, SimpleJob job, CancellationToken cancellationToken)
{
return client.NewCompleteJobCommand(job.Key).Send();
}
}
Conventions
This project uses the following conventions:
- By default the simple name of the
AbstractJob
implementation is used to match theType
which is specified in the BPMN model. This can be overriden by adding theJobTypeAttribute
to theAbstractJob
implementation. - By default the assembly name which contains the job handler is used as the
Worker name
. This can be overriden by adding theWorkerNameAttribute
to theAbstractJob
implementation. - By default the job handlers are added to de DI container with a
Transient
service lifetime. This can be overriden by adding theServiceLifetimeAttribute
to the job handler.
How to build
Run dotnet build Zeebe.Client.Bootstrap.sln
.
How to test
Run dotnet test Zeebe.Client.Bootstrap.sln
.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 is compatible. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net5.0
- Microsoft.Extensions.Configuration.Abstractions (>= 5.0.0)
- Microsoft.Extensions.Hosting (>= 5.0.0)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 5.0.0)
- zb-client (>= 1.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.0.0 | 11,663 | 9/21/2022 |
0.1.5 | 3,885 | 7/29/2022 |
0.1.4 | 425 | 7/29/2022 |
0.1.3 | 16,616 | 2/12/2022 |
0.1.2 | 534 | 2/2/2022 |
0.1.1 | 1,359 | 12/1/2021 |
0.1.0 | 365 | 11/17/2021 |
0.0.8 | 7,600 | 10/24/2021 |
0.0.7 | 320 | 10/21/2021 |
0.0.6 | 368 | 10/12/2021 |
0.0.5 | 327 | 10/12/2021 |
0.0.4 | 321 | 9/29/2021 |
0.0.3 | 339 | 9/6/2021 |
0.0.2 | 353 | 9/3/2021 |
0.0.1 | 328 | 9/2/2021 |
0.0.1-preview010 | 212 | 8/25/2021 |
0.0.1-preview007 | 211 | 8/25/2021 |
0.0.1-preview006 | 214 | 8/25/2021 |
0.0.1-preview005 | 221 | 8/23/2021 |