MassTransit

Geschreven door Mark van Leijenhorst op

In veel applicatie landschappen gebruiken we één en soms meerdere service bussen. Daarbij zien we vaker het product MassTransit. Maar toch is het nog wat onbekend. Dus lichten wij graag toe wat MassTransit is en wat wij als developers er mee kunnen. MassTransit logo

De definitie volgens de website van MassTransit:
"MassTransit is a free, open-source distributed application framework for .NET. MassTransit makes it easy to create applications and services that leverage message-based, loosely-coupled asynchronous communication for higher availability, reliability, and scalability."

Samengevat een open source .NET framework dat het makkelijk maakt om berichten tussen applicaties en services te versturen, met de daarbij horende non-functionals zoals betrouwbaarheid, schaalbaarheid, etc.

Dat klinkt goed, als we deze tekst plotten op een applicatie landschap! Bij asynchrone communicatie gebruiken we in praktijk vaak een service bus. Dan hebben we het ook over de design patterns publisher/subscriber en queuing. Dit framework dient dus als laag tussen de applicaties en service bus, maar we kunnen met ieder ander product direct een koppeling maken met een service bus. Wat is dan de toegevoegde waarde van MassTansit? Er zijn verschillende punten waarin MassTransit van toegevoegde waar kan zijn. Zo regelt MassTransit bij een netwerk storing dat na de verstoring de applicatie weer automatisch connect met de service bus en het versturen van berichten gewoon verder kan gaan. Het kan ook zorgen voor de afhandeling van (fout) berichten van en naar de queue. Zo hoeven wij niet het aknowledged protocols zelf te implementeren. Ook het afhandelen van incorrecte berichten naar de error queue is al onderdeel van MassTransit. Het is default zelfs zo dat het aanmaken van de queues op de service bus al gedaan wordt door MassTransit. Dit is default gedrag dat overigens niet altijd wenselijk is. Soms wil je aansluiten met een al ingerichte service bus. MassTransit regelt dus de technische basis implementatie wat nodig om een goede asynchrone communicatie op te zetten. Naast de basis functionaliteit voor connectie van de service bus. Biedt MassTransit o.a. ook de mogelijkheid om lang durende transacties te coördineren. Dit zien we steeds vaker terug in MicroService architecture. Dit worden ook wel Saga's genoemd. Ook hier zorgt MassTransit voor de technische implementatie. Hierdoor kunnen wij als ontwikkelaar focussen op de implementatie van functionaliteiten.

MassTransit is eenvoudig te implementeren. De complexiteit zit vooral in de configuratie. In de configuratie wordt bepaald welke service bus we willen gebruiken en welke queues we nodig hebben. Het versturen en ontvangen van berichten is generiek gemaakt en losgekoppeld van de onderliggende service bus. Wat het mogelijk maakt om eenvoudig te switchen naar een andere service bus.

Tot slot, MassTransit heeft support voor de meest gebruikte service bussen. En maakt ook gebruik van de tooling die markt conform zijn, zoals o.a. Serilog en verschillende soorten dependency containers. Voor lang durende transacties (Saga's) moet ook ergens state bijgehouden worden en is dus opslag nodig ook hier worden verschillende opties aangeboden zoals Cosmos Db, Entity Framework en Dapper.

De bovenstaande punten is een hoog over wat wij sterk aan MassTransit vinden. Uiteraard zijn er meer mogelijkheden, bijvoorbeeld support voor o.a. streaming. Wat zijn jouw ervaringen met MassTransit, heb je hier ideeën bij en/of wil je meer weten neem dan gerust contact met ons op!

Mark van LeijenhorstMark, 1 dag in de week bij ROC midden Nederland docent software development maar vooral een .NET expert. 'It depends' is een veel voorkomend antwoord wat je van Mark zult krijgen bij zijn antwoord op jouw vraag. Naast zijn werk als .NET expert ook gepassioneerd met ‘hun’ VR oplossing voor flight simulaties. Mark werkt momenteel als verbinder en sr software developer bij KPN.
← Terug
XPRTZ