Skip to content

Commit

Permalink
Upgraded Sample to use the latest Quartz integration
Browse files Browse the repository at this point in the history
  • Loading branch information
phatboyg committed Jul 19, 2022
1 parent 25386e6 commit 741edd7
Show file tree
Hide file tree
Showing 9 changed files with 72 additions and 175 deletions.
7 changes: 6 additions & 1 deletion Sample-Quartz.sln.DotSettings
Original file line number Diff line number Diff line change
Expand Up @@ -194,4 +194,9 @@
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=Interfaces/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="I" Suffix="" Style="AaBb"&gt;&lt;ExtraRule Prefix="" Suffix="" Style="AaBb" /&gt;&lt;/Policy&gt;</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateInstanceFields/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="_" Suffix="" Style="aaBb" /&gt;</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateStaticReadonly/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="AaBb"&gt;&lt;ExtraRule Prefix="_" Suffix="" Style="aaBb" /&gt;&lt;/Policy&gt;</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=TypesAndNamespaces/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="AaBb"&gt;&lt;ExtraRule Prefix="" Suffix="" Style="AaBb_aaBb" /&gt;&lt;ExtraRule Prefix="" Suffix="" Style="AaBb_AaBb" /&gt;&lt;/Policy&gt;</s:String></wpf:ResourceDictionary>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=TypesAndNamespaces/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="AaBb"&gt;&lt;ExtraRule Prefix="" Suffix="" Style="AaBb_aaBb" /&gt;&lt;ExtraRule Prefix="" Suffix="" Style="AaBb_AaBb" /&gt;&lt;/Policy&gt;</s:String>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpKeepExistingMigration/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpPlaceEmbeddedOnSameLineMigration/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpUseContinuousIndentInsideBracesMigration/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EAlwaysTreatStructAsNotReorderableMigration/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateBlankLinesAroundFieldToBlankLinesAroundProperty/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
27 changes: 0 additions & 27 deletions src/QuartzService/CancelScheduledMessageConsumerDefinition.cs

This file was deleted.

35 changes: 0 additions & 35 deletions src/QuartzService/MassTransitQuartzRegistrationExtensions.cs

This file was deleted.

41 changes: 0 additions & 41 deletions src/QuartzService/QuartzEndpointDefinition.cs

This file was deleted.

8 changes: 0 additions & 8 deletions src/QuartzService/QuartzEndpointOptions.cs

This file was deleted.

7 changes: 2 additions & 5 deletions src/QuartzService/QuartzService.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,9 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="MassTransit.Quartz" Version="8.0.0" />
<PackageReference Include="MassTransit.RabbitMQ" Version="8.0.0" />
<PackageReference Include="MassTransit.Quartz" Version="8.0.5" />
<PackageReference Include="MassTransit.RabbitMQ" Version="8.0.5" />
<PackageReference Include="Microsoft.Data.SqlClient" Version="2.1.4" />
<PackageReference Include="Quartz.Extensions.Hosting" Version="3.3.3" />
<PackageReference Include="Quartz.Plugins.TimeZoneConverter" Version="3.3.3" />
<PackageReference Include="Quartz.Serialization.Json" Version="3.3.3" />
<PackageReference Include="Serilog.AspNetCore" Version="5.0.0" />
<PackageReference Include="Serilog.Sinks.Console" Version="4.0.1" />
</ItemGroup>
Expand Down
27 changes: 0 additions & 27 deletions src/QuartzService/ScheduleMessageConsumerDefinition.cs

This file was deleted.

45 changes: 14 additions & 31 deletions src/QuartzService/Startup.cs
Original file line number Diff line number Diff line change
@@ -1,13 +1,8 @@
namespace QuartzService;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.Json;
using System.Text.Json.Nodes;
using System.Threading.Tasks;
using MassTransit;
using MassTransit.Serialization;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Diagnostics.HealthChecks;
using Microsoft.AspNetCore.Hosting;
Expand Down Expand Up @@ -70,24 +65,34 @@ public void ConfigureServices(IServiceCollection services)
});
});

services.Configure<QuartzEndpointOptions>(Configuration.GetSection("QuartzEndpoint"));


services.AddMassTransit(x =>
{
x.AddPublishMessageScheduler();

x.AddQuartzConsumers();

x.AddConsumer<SampleConsumer>();

x.UsingRabbitMq((context, cfg) =>
{
cfg.UsePublishMessageScheduler();

cfg.ConfigureEndpoints(context);
});
});

services.Configure<MassTransitHostOptions>(options =>
{
options.WaitUntilStarted = true;
});

services.AddQuartzHostedService(options =>
{
options.StartDelay = TimeSpan.FromSeconds(5);
options.WaitForJobsToComplete = true;
});

services.AddHostedService<SuperWorker>();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
Expand Down Expand Up @@ -116,28 +121,6 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
public static Task HealthCheckResponseWriter(HttpContext context, HealthReport result)
{
context.Response.ContentType = "application/json";
return context.Response.WriteAsync(ToJsonString(result));
}

static string ToJsonString(HealthReport result)
{
var healthResult = new JsonObject
{
["status"] = result.Status.ToString(),
["results"] = new JsonObject(result.Entries.Select(entry => new KeyValuePair<string, JsonNode>(entry.Key,
new JsonObject
{
["status"] = entry.Value.Status.ToString(),
["description"] = entry.Value.Description,
["data"] = JsonSerializer.SerializeToNode(entry.Value.Data, SystemTextJsonMessageSerializer.Options)
}))!)
};

var options = new System.Text.Json.JsonSerializerOptions
{
WriteIndented = true,
};

return healthResult.ToJsonString(options);
return context.Response.WriteAsync(result.ToJsonString());
}
}
50 changes: 50 additions & 0 deletions src/QuartzService/SuperWorker.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
namespace QuartzService;

using System;
using System.Threading;
using System.Threading.Tasks;
using MassTransit;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;


public class SuperWorker :
BackgroundService
{
readonly IMessageScheduler _messageScheduler;

public SuperWorker(IMessageScheduler messageScheduler)
{
_messageScheduler = messageScheduler;
}

protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
await _messageScheduler.SchedulePublish(TimeSpan.FromSeconds(15), new DemoMessage() { Value = "Hello, World" }, cancellationToken: stoppingToken);
}
}


public class DemoMessage
{
public string Value { get; set; }
}


public class SampleConsumer :
IConsumer<DemoMessage>
{
readonly ILogger<SampleConsumer> _logger;

public SampleConsumer(ILogger<SampleConsumer> logger)
{
_logger = logger;
}

public Task Consume(ConsumeContext<DemoMessage> context)
{
_logger.LogInformation("Received scheduled message: {Value}", context.Message.Value);

return Task.CompletedTask;
}
}

0 comments on commit 741edd7

Please sign in to comment.