Exemplo n.º 1
0
            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;
                }
            }
Exemplo n.º 2
0
            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);
        }