Skip to content
This repository was archived by the owner on Nov 15, 2021. It is now read-only.

Repository files navigation

Infrastructure.Messaging

Library for messaging between services.

Builds

Travis
Infrastructure.MessagingBuild Status

Installation

PackagesTravis
Infrastructure.MessagingNuGet version
Infrastructure.Messaging.DependencyInjectionNuGet version
Infrastructure.Messaging.RabbitMQNuGet version
Infrastructure.Messaging.InMemoryNuGet version

Requirements

  • .NETStandard 2.1
  • Microsoft.Extensions.DependencyInjection (>= 3.0.0)
  • Microsoft.Extensions.Logging.Abstractions (>= 3.0.0)
  • System.Text.Json (>= 4.6.0)

Demo

messaging.gif

How to

Register Messaging via .AddMessaging() extension method provided by Infrastructure.Messaging.Extensions.DependencyInjection package.

varrabbitMQUri=configuration.GetSection("RabbitMq")["uri"];varserviceProvider=newServiceCollection().AddLogging(lb =>lb.AddConsole()).AddMessaging(mc =>{mc.UseRabbitMQ(cf =>cf.Uri=newUri(rabbitMQUri));mc.UseJsonPacker(jso =>jso.PropertyNamingPolicy=JsonNamingPolicy.CamelCase);}, sc =>sc.AddSingleton<IMessageHandler<TestMessage>,TestMessageHandler>().AddSingleton<IMessageHandler<TestMessageWithEventId>,TestMessageHandler>()).BuildServiceProvider();

Implement handlers.

publicsealedclassTestMessageHandler:IMessageHandler<TestMessage>,IMessageHandler<TestMessageWithEventId>{privatereadonlyILogger<TestMessageHandler>_logger;publicTestMessageHandler(ILogger<TestMessageHandler>logger){_logger=logger;}publicasyncTaskHandle(TestMessagemessage,CancellationTokencancellationToken){awaitTask.Delay(100);_logger.LogInformation("Test message was dispached {message}",message.Ping);thrownewException("AASDSD");}publicTaskHandle(TestMessageWithEventIdmessage,CancellationTokencancellationToken){_logger.LogInformation("TestMessageWithEventId was dispatched. {eventId}, {text}",message.EventId,message.Text);returnTask.CompletedTask;}}

Use IMessageRouter.Route() to start the routing process and IMessagePublisher.Publish(IMessage message) to publish a message.

publicasyncTaskMain(){CancellationTokenSource=newCancellationTokenSource();//..MessageRouter=serviceProvider.GetRequiredService<IMessageRouter>();Publisher=serviceProvider.GetRequiredService<IMessagePublisher>();//..awaitPublisher.Publish(newTestMessage{Ping="A"},cancellationToken:CancellationTokenSource.Token);// ..awaitMessageRouter.Route(cancellationToken:CancellationTokenSource.Token);}

About

Library for messaging between services.

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages