Files
2026-02-03 08:31:53 -05:00

57 lines
1.6 KiB
C#

using Messages;
using Wolverine;
using Wolverine.Nats;
var builder = WebApplication.CreateBuilder(args);
builder.AddServiceDefaults();
builder.UseWolverine(options =>
{
options.UseNats(builder.Configuration.GetConnectionString("nats") ??
throw new Exception("No NATS connection string configured"))
.AutoProvision()
.UseJetStream(js =>
{
js.MaxDeliver = 5;
js.AckWait = TimeSpan.FromSeconds(30);
});
options.ListenToNatsSubject("messages-sent")
.BufferedInMemory();
// While this will sort of work, you should have exactly one handler for request-response
// semantics - wolverine will take it, but log an error.
// options.ListenToNatsSubject("math.add")
// .ProcessInline();
options.ListenToNatsSubject("people.>")
.UseJetStream("PEOPLE", "late-comer");
});
var app = builder.Build();
app.MapDefaultEndpoints();
app.Run();
public static class MessageHandler
{
public static void Handle(SendMessage message, ILogger logger)
{
logger.LogInformation($"Received message: {message.Message}");
}
public static void Handle(UserDocument user, ILogger logger)
{
logger.LogInformation($"Received user: {user.Id} - {user.Name}");
}
public static void Handle(UserNameChanged change, ILogger logger)
{
logger.LogInformation($"User name changed: {change.Id} - {change.NewName}");
}
public static NumbersAdded Handle(AddThem request)
{
return new NumbersAdded(42);
}
}