Here is my request code:
var response = await requestClient.GetResponse<PayloadResponse>(new PayloadRequest { DomainName = "Me", PayloadId = Guid.NewGuid() }, stoppingToken, RequestTimeout.After(3));
Here is my Saga State machine:
namespace Company.StateMachines
{
using Contracts;
using MassTransit;
using MassTransit.Contracts.JobService;
using Microsoft.Extensions.Logging;
using System;
public class PayloadStateMachine :
MassTransitStateMachine<PayloadState>
{
public PayloadStateMachine(ILogger<PayloadStateMachine> logger)
{
InstanceState(x => x.CurrentState);
Event(() => PayloadRequestEvent, x => x.CorrelateById(context => context.Message.PayloadId));
Initially(
When(PayloadRequestEvent)
.Then(context =>
{
context.Saga.RequestId = context.Message.RequestId;
context.Saga.ResponseAddress = context.Message.ResponseAddress;
PayloadSendEvent cb = new PayloadSendEvent();
cb.CookTemp = context.Message.CookTemp;
cb.CorrelationId = context.Saga.CorrelationId;
cb.Property = context.Message.Property;
context.Publish(cb);
}
)
.TransitionTo(FinishCooking)
);
During(FinishCooking,
When(BurgerCookerFinishedCookingEvent)
.TransitionTo(Completed)
.SendAsync(context => context.Saga.ResponseAddress,
context => context.Init<PayloadResponse>(new
{
MyResponse = context.Message.Note,
Property = context.Message.Property
}), (context, sendContext) => sendContext.RequestId = context.Saga.RequestId));
SetCompletedWhenFinalized();
}
public State PayloadSendEvent { get; private set; }
public State FinishCooking { get; private set; }
public State Completed { get; private set; }
public Event<PayloadRequestEvent> PayloadRequestEvent { get; }
public Event<PayloadPrepareSendEvent> PayloadProcessEvent { get; }
public Event<PayloadResponseEvent> BurgerCookerFinishedCookingEvent { get; }
}
}
Can anyone tell me why using a state machine takes 3 seconds to get a response back but if I remove the state machine I get the response back in under a second? I really need to use a state machine but not sure where I am going wrong.
Need help here to figure out next steps.