public void RegisterCorrelation(MassTransitStateMachine <TInstance> machine) { var @event = (Event <TData>)_propertyInfo.GetValue(machine); if (@event == null) { return; } if (GlobalTopology.Send.GetMessageTopology <TData>().TryGetConvention(out ICorrelationIdMessageSendTopologyConvention <TData> convention) && convention.TryGetMessageCorrelationId(out var messageCorrelationId)) { var builderType = typeof(MessageCorrelationIdEventCorrelationBuilder <,>).MakeGenericType(typeof(TInstance), typeof(TData)); var builder = (IEventCorrelationBuilder)Activator.CreateInstance(builderType, machine, @event, messageCorrelationId); machine._eventCorrelations[@event] = builder.Build(); } else { var correlationType = typeof(UncorrelatedEventCorrelation <,>).MakeGenericType(typeof(TInstance), typeof(TData)); var correlation = (EventCorrelation <TInstance, TData>)Activator.CreateInstance(correlationType, @event); machine._eventCorrelations[@event] = correlation; } }
public void RegisterCorrelation(MassTransitStateMachine <TInstance> machine) { var @event = (Event <TData>)_propertyInfo.GetValue(machine); if (@event == null) { return; } var builderType = typeof(CorrelatedByEventCorrelationBuilder <,>).MakeGenericType(typeof(TInstance), typeof(TData)); var builder = (IEventCorrelationBuilder)Activator.CreateInstance(builderType, machine, @event); machine._eventCorrelations[@event] = builder.Build(); }
public static IRabbitMqBusFactoryConfigurator RegisterSaga <TStateMachineInstance>(this IRabbitMqBusFactoryConfigurator cfg, MassTransitStateMachine <TStateMachineInstance> sagaStateMachine, EntityFrameworkSagaRepository <TStateMachineInstance> sagaRepository) where TStateMachineInstance : class, SagaStateMachineInstance, new() { var queueName = $"{typeof(TStateMachineInstance).FullName}"; cfg.ReceiveEndpoint(queueName, e => { e.UseConcurrencyLimit(1); e.StateMachineSaga(sagaStateMachine, sagaRepository); }); return(cfg); }