Skip to content

Commit 646a75a

Browse files
committed
added the sample for worker service
1 parent 5776656 commit 646a75a

File tree

6 files changed

+115
-0
lines changed

6 files changed

+115
-0
lines changed

TickerQ.sln

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TickerQ.Sample.WebApi", "sa
4444
EndProject
4545
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TickerQ.Sample.Console", "samples\TickerQ.Sample.Console\TickerQ.Sample.Console.csproj", "{723F26D9-C675-4883-8B62-AEBA370566D4}"
4646
EndProject
47+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TickerQ.Sample.WorkerService", "samples\TickerQ.Sample.WorkerService\TickerQ.Sample.WorkerService.csproj", "{8FF073D6-F685-4662-B1C4-AC551917ACE0}"
48+
EndProject
4749
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TickerQ.SDK", "src\TickerQ.SDK\TickerQ.SDK.csproj", "{458E9E1E-A58D-43B8-9CFF-FFC84C715094}"
4850
EndProject
4951
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TickerQ.RemoteExecutor", "src\TickerQ.RemoteExecutor\TickerQ.RemoteExecutor.csproj", "{F8599439-948C-4856-ACD5-79CCBC13E9AE}"
@@ -178,6 +180,18 @@ Global
178180
{723F26D9-C675-4883-8B62-AEBA370566D4}.Release|x64.Build.0 = Release|Any CPU
179181
{723F26D9-C675-4883-8B62-AEBA370566D4}.Release|x86.ActiveCfg = Release|Any CPU
180182
{723F26D9-C675-4883-8B62-AEBA370566D4}.Release|x86.Build.0 = Release|Any CPU
183+
{8FF073D6-F685-4662-B1C4-AC551917ACE0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
184+
{8FF073D6-F685-4662-B1C4-AC551917ACE0}.Debug|Any CPU.Build.0 = Debug|Any CPU
185+
{8FF073D6-F685-4662-B1C4-AC551917ACE0}.Debug|x64.ActiveCfg = Debug|Any CPU
186+
{8FF073D6-F685-4662-B1C4-AC551917ACE0}.Debug|x64.Build.0 = Debug|Any CPU
187+
{8FF073D6-F685-4662-B1C4-AC551917ACE0}.Debug|x86.ActiveCfg = Debug|Any CPU
188+
{8FF073D6-F685-4662-B1C4-AC551917ACE0}.Debug|x86.Build.0 = Debug|Any CPU
189+
{8FF073D6-F685-4662-B1C4-AC551917ACE0}.Release|Any CPU.ActiveCfg = Release|Any CPU
190+
{8FF073D6-F685-4662-B1C4-AC551917ACE0}.Release|Any CPU.Build.0 = Release|Any CPU
191+
{8FF073D6-F685-4662-B1C4-AC551917ACE0}.Release|x64.ActiveCfg = Release|Any CPU
192+
{8FF073D6-F685-4662-B1C4-AC551917ACE0}.Release|x64.Build.0 = Release|Any CPU
193+
{8FF073D6-F685-4662-B1C4-AC551917ACE0}.Release|x86.ActiveCfg = Release|Any CPU
194+
{8FF073D6-F685-4662-B1C4-AC551917ACE0}.Release|x86.Build.0 = Release|Any CPU
181195
{458E9E1E-A58D-43B8-9CFF-FFC84C715094}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
182196
{458E9E1E-A58D-43B8-9CFF-FFC84C715094}.Debug|Any CPU.Build.0 = Debug|Any CPU
183197
{458E9E1E-A58D-43B8-9CFF-FFC84C715094}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -218,6 +232,7 @@ Global
218232
{D87B9599-22C7-4E82-B300-1239E504E097} = {BA086F2D-2778-4F58-A9AA-45F560CE3504}
219233
{4DC9FE10-966F-4C8A-B7D2-1215DC319B9E} = {45D577FA-DB7A-4B96-BB3F-97DDA0A929D5}
220234
{723F26D9-C675-4883-8B62-AEBA370566D4} = {45D577FA-DB7A-4B96-BB3F-97DDA0A929D5}
235+
{8FF073D6-F685-4662-B1C4-AC551917ACE0} = {45D577FA-DB7A-4B96-BB3F-97DDA0A929D5}
221236
{458E9E1E-A58D-43B8-9CFF-FFC84C715094} = {BA086F2D-2778-4F58-A9AA-45F560CE3504}
222237
{F8599439-948C-4856-ACD5-79CCBC13E9AE} = {BA086F2D-2778-4F58-A9AA-45F560CE3504}
223238
EndGlobalSection
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
using TickerQ.DependencyInjection;
2+
using TickerQ.Utilities.Base;
3+
using TickerQ.Utilities.Entities;
4+
using TickerQ.Utilities.Interfaces.Managers;
5+
6+
var builder = Host.CreateDefaultBuilder(args);
7+
8+
if (OperatingSystem.IsWindows())
9+
{
10+
builder.UseWindowsService();
11+
}
12+
13+
builder.ConfigureServices(services =>
14+
{
15+
services.AddTickerQ();
16+
services.AddHostedService<SampleScheduler>();
17+
});
18+
19+
var host = builder.Build();
20+
21+
// Ensure TickerFunction registrations in hosting scenarios where ModuleInitializer may be skipped
22+
global::TickerQ.Sample.WorkerService.TickerQInstanceFactoryExtensions.Initialize();
23+
24+
// Initialize TickerQ for generic host applications
25+
host.UseTickerQ();
26+
27+
await host.RunAsync();
28+
29+
public class WorkerServiceSampleJobs
30+
{
31+
private readonly ILogger<WorkerServiceSampleJobs> _logger;
32+
33+
public WorkerServiceSampleJobs(ILogger<WorkerServiceSampleJobs> logger)
34+
{
35+
_logger = logger;
36+
}
37+
38+
[TickerFunction("WorkerServiceSample_HelloWorld")]
39+
public Task HelloWorldAsync(TickerFunctionContext context, CancellationToken cancellationToken)
40+
{
41+
_logger.LogInformation(
42+
"[WorkerService] Hello from TickerQ! Id={Id}, ScheduledFor={ScheduledFor:O}",
43+
context.Id,
44+
context.ScheduledFor);
45+
46+
return Task.CompletedTask;
47+
}
48+
}
49+
50+
// Hosted service that schedules a single job on startup
51+
public class SampleScheduler : IHostedService
52+
{
53+
private readonly ITimeTickerManager<TimeTickerEntity> _timeTickerManager;
54+
private readonly ILogger<SampleScheduler> _logger;
55+
56+
public SampleScheduler(
57+
ITimeTickerManager<TimeTickerEntity> timeTickerManager,
58+
ILogger<SampleScheduler> logger)
59+
{
60+
_timeTickerManager = timeTickerManager;
61+
_logger = logger;
62+
}
63+
64+
public async Task StartAsync(CancellationToken cancellationToken)
65+
{
66+
var result = await _timeTickerManager.AddAsync(new TimeTickerEntity
67+
{
68+
Function = "WorkerServiceSample_HelloWorld",
69+
ExecutionTime = DateTime.UtcNow.AddSeconds(5)
70+
}, cancellationToken);
71+
72+
if (!result.IsSucceeded)
73+
{
74+
_logger.LogError(result.Exception, "Failed to schedule worker service sample job.");
75+
return;
76+
}
77+
78+
_logger.LogInformation(
79+
"Scheduled worker service sample job Id={Id}, ScheduledFor={ScheduledFor:O}",
80+
result.Result.Id,
81+
result.Result.ExecutionTime);
82+
}
83+
84+
public Task StopAsync(CancellationToken cancellationToken) => Task.CompletedTask;
85+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<Project Sdk="Microsoft.NET.Sdk.Worker">
2+
3+
<PropertyGroup>
4+
<TargetFramework>net10.0</TargetFramework>
5+
<Nullable>enable</Nullable>
6+
<ImplicitUsings>enable</ImplicitUsings>
7+
</PropertyGroup>
8+
9+
<ItemGroup>
10+
<PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="[10.0.0,11.0.0)" />
11+
<PackageReference Include="TickerQ" Version="10.1.1" />
12+
</ItemGroup>
13+
14+
15+
</Project>

tickerq-console.db

4 KB
Binary file not shown.

tickerq-console.db-shm

32 KB
Binary file not shown.

tickerq-console.db-wal

149 KB
Binary file not shown.

0 commit comments

Comments
 (0)