57 lines
1.6 KiB
C#
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);
|
|
}
|
|
|
|
} |