1
0
mirror of synced 2024-11-14 14:33:49 +00:00
Tapeti/Examples/04-Transient/Program.cs

54 lines
1.6 KiB
C#
Raw Normal View History

using System;
using System.Threading.Tasks;
using ExampleLib;
using Messaging.TapetiExample;
using SimpleInjector;
using Tapeti;
using Tapeti.DataAnnotations;
using Tapeti.Default;
using Tapeti.SimpleInjector;
using Tapeti.Transient;
namespace _04_Transient
{
public class Program
{
2022-02-09 08:19:56 +00:00
public static void Main()
{
var container = new Container();
var dependencyResolver = new SimpleInjectorDependencyResolver(container);
container.Register<ILogger, ConsoleLogger>();
var helper = new ExampleConsoleApp(dependencyResolver);
helper.Run(MainAsync);
}
internal static async Task MainAsync(IDependencyResolver dependencyResolver, Func<Task> waitForDone)
{
var config = new TapetiConfig(dependencyResolver)
.WithDataAnnotations()
.WithTransient(TimeSpan.FromSeconds(5), "tapeti.example.04.transient")
.RegisterAllControllers()
.Build();
2022-02-09 08:19:56 +00:00
await using var connection = new TapetiConnection(config);
await connection.Subscribe();
2022-02-09 08:19:56 +00:00
Console.WriteLine("Sending request...");
2022-02-09 08:19:56 +00:00
var transientPublisher = dependencyResolver.Resolve<ITransientPublisher>();
var response = await transientPublisher.RequestResponse<LoggedInUsersRequestMessage, LoggedInUsersResponseMessage>(
new LoggedInUsersRequestMessage());
2022-02-09 08:19:56 +00:00
Console.WriteLine("Response: " + response.Count);
2022-02-09 08:19:56 +00:00
// Unlike the other example, there is no need to call waitForDone, once we're here the response has been handled.
}
}
}