NServiceBus

 NServicebus = abstraction over een service bus broker.. voorkeur masstransit

 endpoint configuration = basis, geef je naam, gewoon logische naam, bijv "Sales".

 endpoint serialization -> welke serializer moet gebruikt worden

 endpoint transport = medium dat de messages transporteert (memory, azure service bus, rabbitmq, etc). LearningTransport is een memory implementation. Dus de berichten gaan nu via het geheugen.

 endpointInstance =  Endpoint.start(endpointConfiguration) 

    -> start de service, een background service 

Nservicebus kent 3 soortenm messages

1. command: 1 of meerdere senders, altijd 1 receiver. Doel is om een plek iets te laten doen. naming is dan: PlaceOrder, DoSomething

2. event: pub sub scenario: 1 sender, meerdere receivers. Doel: laat de wereld weten dat er iets is gebeurt: OrderPlaced, UserLoggedIn

3. message: voor alle overige berichten, bijv een reply op een request/response

public class ExampleCommand : ICommend

{}

later in code te gebruiken om te versturen:

var command = new ExampleCommand()

// SendLocal gebruik je niet in productie, alleen voor dev en demo 

await endpointInstance.SendLocal(command)

Command handler:

public class ExampleCommandHandler : IHandleMessages<ExampleCommand>

{

}

IMessageSession kan je injecteren in je classes als je iets wilt publiseren (pub sub / events)

messageSession.Send(<instantie van ICommand>);

Als je iets probeert te senden bij een command, maar er is geen ontvanger gedefinieerd, krijg je een exception

Dit los je op door:

1.  routing te specificeren  / configureren: Welke type command wordt door welke endpointconfiguratie afgehandeld

   routing.RouteToEndpoint(typeof(ExampleCommand), "Sales")

2.  een handler te maken

   -> erevn van IHandleMessages<ExampleCommand>

Bij het publishen van een event (pub/sub) heb je geen routing nodig 

Reacties

Populaire posts van deze blog

IIS: Application pool recycling vs IIS Reset

Hoofdstuk 2 - Les 2

Totstandkoming estimated en actual query plans Sql Server