Skip to content

Instantly share code, notes, and snippets.

@dcomartin
Created April 13, 2022 21:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dcomartin/99d0c5852dd2e98ff254fc1c85038ff3 to your computer and use it in GitHub Desktop.
Save dcomartin/99d0c5852dd2e98ff254fc1c85038ff3 to your computer and use it in GitHub Desktop.
public class PlaceOrderSaga :
Saga<PlaceOrderSagaData>,
IAmStartedByMessages<OrderPlaced>,
IHandleMessages<OrderBilled>,
IHandleMessages<ShippingLabelCreated>
{
protected override void ConfigureHowToFindSaga(SagaPropertyMapper<PlaceOrderSagaData> mapper)
{
mapper.ConfigureMapping<OrderPlaced>(message => message.OrderId).ToSaga(sagaData => sagaData.OrderId);
mapper.ConfigureMapping<OrderBilled>(message => message.OrderId).ToSaga(sagaData => sagaData.OrderId);
mapper.ConfigureMapping<ShippingLabelCreated>(message => message.OrderId).ToSaga(sagaData => sagaData.OrderId);
}
public async Task Handle(OrderPlaced message, IMessageHandlerContext context)
{
await context.Send(new BillOrder
{
OrderId = message.OrderId
});
}
public async Task Handle(OrderBilled message, IMessageHandlerContext context)
{
await context.Send(new CreateShippingLabel
{
OrderId = message.OrderId
});
}
public async Task Handle(ShippingLabelCreated message, IMessageHandlerContext context)
{
await context.Send(new ReadyToShipOrder
{
OrderId = Data.OrderId
});
MarkAsComplete();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment