From 20353a417b2b29d95831c33cd9cf6c0dedc550d4 Mon Sep 17 00:00:00 2001 From: Vladimir Pecanac Date: Mon, 24 Aug 2026 14:03:20 +0200 Subject: [PATCH] MassTransitRabbitMQ: retarget net10.0, MassTransit 9.2.0, generic-host consumer - All four projects net6.0 -> net10.0 - MassTransit and MassTransit.RabbitMQ 7.3.1 -> 9.2.0 - Drop MassTransit.AspNetCore reference and the obsolete AddMassTransitHostedService() call; the hosted service is registered automatically by AddMassTransit - Rewrite the consumer onto Host.CreateApplicationBuilder with AddConsumer() and ConfigureEndpoints(), replacing the Bus.Factory.CreateUsingRabbitMq + manual StartAsync/StopAsync loop - Replace JsonConvert.SerializeObject with JsonSerializer.Serialize; MassTransit 9 no longer brings Newtonsoft.Json in transitively (CS0246) - OrderCreated message contract is get-only, per the immutable-message convention MassTransit materialises against --- .../Consumer/Consumer.csproj | 7 ++-- .../MassTransitRabbitMQ/Consumer/Program.cs | 38 ++++++++----------- .../Producer/Producer.csproj | 7 ++-- .../MassTransitRabbitMQ/Producer/Program.cs | 2 - .../SharedModels/OrderCreated.cs | 10 ++--- .../SharedModels/SharedModels.csproj | 2 +- .../MassTransitRabbitMQ/Tests/Tests.csproj | 2 +- 7 files changed, 30 insertions(+), 38 deletions(-) diff --git a/aspnetcore-webapi/MassTransitRabbitMQ/Consumer/Consumer.csproj b/aspnetcore-webapi/MassTransitRabbitMQ/Consumer/Consumer.csproj index fe32267411..b247ffd383 100644 --- a/aspnetcore-webapi/MassTransitRabbitMQ/Consumer/Consumer.csproj +++ b/aspnetcore-webapi/MassTransitRabbitMQ/Consumer/Consumer.csproj @@ -2,14 +2,15 @@ Exe - net6.0 + net10.0 enable enable - - + + + diff --git a/aspnetcore-webapi/MassTransitRabbitMQ/Consumer/Program.cs b/aspnetcore-webapi/MassTransitRabbitMQ/Consumer/Program.cs index 30f20a4a9f..afe0a6635e 100644 --- a/aspnetcore-webapi/MassTransitRabbitMQ/Consumer/Program.cs +++ b/aspnetcore-webapi/MassTransitRabbitMQ/Consumer/Program.cs @@ -1,36 +1,30 @@ -using MassTransit; -using Newtonsoft.Json; +using MassTransit; +using Microsoft.Extensions.Hosting; using SharedModels; +using System.Text.Json; -var busControl = Bus.Factory.CreateUsingRabbitMq(cfg => +var builder = Host.CreateApplicationBuilder(args); + +builder.Services.AddMassTransit(x => { - cfg.ReceiveEndpoint("order-created-event", e => + x.AddConsumer() + .Endpoint(e => e.Name = "order-created-event"); + + x.UsingRabbitMq((context, cfg) => { - e.Consumer(); + cfg.ConfigureEndpoints(context); }); - }); -await busControl.StartAsync(new CancellationToken()); - -try -{ - Console.WriteLine("Press enter to exit"); - - await Task.Run(() => Console.ReadLine()); -} -finally -{ - await busControl.StopAsync(); -} +await builder.Build().RunAsync(); class OrderCreatedConsumer : IConsumer { - public async Task Consume(ConsumeContext context) + public Task Consume(ConsumeContext context) { - var jsonMessage = JsonConvert.SerializeObject(context.Message); + var jsonMessage = JsonSerializer.Serialize(context.Message); Console.WriteLine($"OrderCreated message: {jsonMessage}"); + + return Task.CompletedTask; } } - - diff --git a/aspnetcore-webapi/MassTransitRabbitMQ/Producer/Producer.csproj b/aspnetcore-webapi/MassTransitRabbitMQ/Producer/Producer.csproj index 02e65cc133..50de051b98 100644 --- a/aspnetcore-webapi/MassTransitRabbitMQ/Producer/Producer.csproj +++ b/aspnetcore-webapi/MassTransitRabbitMQ/Producer/Producer.csproj @@ -1,15 +1,14 @@ - net6.0 + net10.0 enable enable - - - + + diff --git a/aspnetcore-webapi/MassTransitRabbitMQ/Producer/Program.cs b/aspnetcore-webapi/MassTransitRabbitMQ/Producer/Program.cs index 2a9c93c33b..f85470794a 100644 --- a/aspnetcore-webapi/MassTransitRabbitMQ/Producer/Program.cs +++ b/aspnetcore-webapi/MassTransitRabbitMQ/Producer/Program.cs @@ -8,8 +8,6 @@ x.UsingRabbitMq(); }); -builder.Services.AddMassTransitHostedService(); - builder.Services.AddControllers(); var app = builder.Build(); diff --git a/aspnetcore-webapi/MassTransitRabbitMQ/SharedModels/OrderCreated.cs b/aspnetcore-webapi/MassTransitRabbitMQ/SharedModels/OrderCreated.cs index 8ed828df2f..a054612aa1 100644 --- a/aspnetcore-webapi/MassTransitRabbitMQ/SharedModels/OrderCreated.cs +++ b/aspnetcore-webapi/MassTransitRabbitMQ/SharedModels/OrderCreated.cs @@ -1,13 +1,13 @@ -namespace SharedModels +namespace SharedModels { public interface OrderCreated { - int Id { get; set; } + int Id { get; } - string ProductName { get; set; } + string ProductName { get; } - decimal Price { get; set; } + decimal Price { get; } - int Quantity { get; set; } + int Quantity { get; } } } \ No newline at end of file diff --git a/aspnetcore-webapi/MassTransitRabbitMQ/SharedModels/SharedModels.csproj b/aspnetcore-webapi/MassTransitRabbitMQ/SharedModels/SharedModels.csproj index 132c02c59c..9ed914b5ba 100644 --- a/aspnetcore-webapi/MassTransitRabbitMQ/SharedModels/SharedModels.csproj +++ b/aspnetcore-webapi/MassTransitRabbitMQ/SharedModels/SharedModels.csproj @@ -1,7 +1,7 @@ - net6.0 + net10.0 enable enable diff --git a/aspnetcore-webapi/MassTransitRabbitMQ/Tests/Tests.csproj b/aspnetcore-webapi/MassTransitRabbitMQ/Tests/Tests.csproj index a5f45fe907..f281d54db0 100644 --- a/aspnetcore-webapi/MassTransitRabbitMQ/Tests/Tests.csproj +++ b/aspnetcore-webapi/MassTransitRabbitMQ/Tests/Tests.csproj @@ -1,7 +1,7 @@ - net6.0 + net10.0 enable false