Skip to content

Instantly share code, notes, and snippets.

@dcomartin
Last active August 3, 2022 21:30
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/91157cac77b05ae0aedabe71a0578a8c to your computer and use it in GitHub Desktop.
Save dcomartin/91157cac77b05ae0aedabe71a0578a8c 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.MapSaga(saga => saga.OrderId)
.ToMessage<OrderPlaced>(msg => msg.OrderId)
.ToMessage<OrderBilled>(msg => msg.OrderId)
.ToMessage<ShippingLabelCreated>(msg => msg.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