NServiceBus - capturing event handled by "child" saga also in "parent" saga

29 views Asked by At

I have Saga_X that sends command. As a result of that command number of Saga_Y instances are created. At some point Saga_Y handles event. I would like that event to be captured also by Saga_X. Is there any other way?

I tried to use ReplyToOriginator in Saga_Y but it does not work for Events. The other option I see is passing ParentCorrelationId and using it to republish event. I want to avoid that.

1

There are 1 answers

0
Dennis van der Stelt On

It's not 100% clear what you're trying to accomplish, but this should work:

public class Saga_X : Saga<Saga_X_Data>,
    IAmStartedByMessages<InitialEvent>,
    IHandleMessages<Reply>
{
    public async Task Handle(InitialEvent message, IMessageHandlerContext context)
    {
        await context.Publish(new SecondEvent());
    }

    public Task Handle(Reply message, IMessageHandlerContext context)
    {
        return Task.CompletedTask;
    }
}

public class Saga_Y : Saga<Saga_Y_Data>, 
    IAmStartedByMessages<SecondEvent>
{
    public async Task Handle(SecondEvent message, IMessageHandlerContext context)
    {
        await context.Reply(new Reply());
    }
}