Exemple #1
0
 public Handle(HostHandle hostHandle, IBus bus, IBusObserver busObserver, ILogContext logContext)
 {
     _bus         = bus;
     _busObserver = busObserver;
     _logContext  = logContext;
     _hostHandle  = hostHandle;
 }
Exemple #2
0
            public Handle(HostHandle hostHandle, IBus bus, IBusObserver busObserver, ILogContext logContext)
            {
                _bus         = bus;
                _busObserver = busObserver;
                _logContext  = logContext;
                _hostHandle  = hostHandle;

                Ready = ReadyOrNot(hostHandle.Ready);
            }
 public Handle(IEnumerable <HostHandle> hostHandles, IEnumerable <ReceiveEndpointHandle> endpointHandles, IEnumerable <ConnectHandle> observerHandles, IBus bus, IBusObserver busObserver, BusReady ready)
 {
     _bus             = bus;
     _busObserver     = busObserver;
     _endpointHandles = endpointHandles.ToArray();
     _hostHandles     = hostHandles.ToArray();
     _observerHandles = observerHandles.ToArray();
     Ready            = ready.Ready;
 }
            public Handle(IHost host, HostHandle hostHandle, MassTransitBus bus, IBusObserver busObserver, ILogContext logContext)
            {
                _host        = host;
                _bus         = bus;
                _busObserver = busObserver;
                _logContext  = logContext;
                _hostHandle  = hostHandle;

                Ready = ReadyOrNot(hostHandle.Ready);
            }
        public MassTransitBus(Uri address, IConsumePipe consumePipe, ISendEndpointProvider sendEndpointProvider,
                              IPublishEndpointProvider publishEndpointProvider, IBusHostCollection hosts,
                              IBusObserver busObservable)
        {
            Address                  = address;
            _consumePipe             = consumePipe;
            _sendEndpointProvider    = sendEndpointProvider;
            _publishEndpointProvider = publishEndpointProvider;
            _busObservable           = busObservable;
            _hosts = hosts;

            _publishEndpoint = new Lazy <IPublishEndpoint>(() => publishEndpointProvider.CreatePublishEndpoint(address));
        }
Exemple #6
0
        public MassTransitBus(IBusHostControl host, IBusObserver busObservable, IReceiveEndpointConfiguration endpointConfiguration)
        {
            Address          = endpointConfiguration.InputAddress;
            _consumePipe     = endpointConfiguration.ConsumePipe;
            _host            = host;
            _busObservable   = busObservable;
            _receiveEndpoint = endpointConfiguration.ReceiveEndpoint;

            Topology = host.Topology;

            _logContext = LogContext.Current;

            _publishEndpoint = new PublishEndpoint(_receiveEndpoint);
        }
        public MassTransitBus(Uri address, IConsumePipe consumePipe, ISendEndpointProvider sendEndpointProvider,
                              IPublishEndpointProvider publishEndpointProvider, IEnumerable <IReceiveEndpoint> receiveEndpoints, IEnumerable <IBusHostControl> hosts,
                              IBusObserver busObservable)
        {
            Address                  = address;
            _consumePipe             = consumePipe;
            _sendEndpointProvider    = sendEndpointProvider;
            _publishEndpointProvider = publishEndpointProvider;
            _busObservable           = busObservable;
            _receiveEndpoints        = receiveEndpoints.ToArray();
            _hosts = hosts.ToArray();

            _receiveObservers = new ReceiveObservable();
            _publishEndpoint  = new Lazy <IPublishEndpoint>(() => publishEndpointProvider.CreatePublishEndpoint(address));
        }
Exemple #8
0
        public MassTransitBus(IBusHostControl host, IBusObserver busObservable, IReceiveEndpointConfiguration endpointConfiguration)
        {
            Address      = endpointConfiguration.InputAddress;
            _consumePipe = endpointConfiguration.ConsumePipe;
            _consumePipeSpecification = endpointConfiguration.Consume.Specification;
            _host            = host;
            _busObservable   = busObservable;
            _receiveEndpoint = endpointConfiguration.ReceiveEndpoint;

            Topology = host.Topology;

            _logContext = LogContext.Current;

            _publishEndpoint = new Lazy <IPublishEndpoint>(() => _receiveEndpoint.CreatePublishEndpoint(Address));
        }
Exemple #9
0
        public MassTransitBus(Uri address, IConsumePipe consumePipe, ISendEndpointProvider sendEndpointProvider,
                              IPublishEndpointProvider publishEndpointProvider, IEnumerable <IReceiveEndpoint> receiveEndpoints, IEnumerable <IBusHostControl> hosts,
                              IBusObserver busObservable)
        {
            _log                     = Logger.Get <MassTransitBus>();
            Address                  = address;
            _consumePipe             = consumePipe;
            _sendEndpointProvider    = sendEndpointProvider;
            _publishEndpointProvider = publishEndpointProvider;
            _busObservable           = busObservable;
            _receiveEndpoints        = receiveEndpoints.ToArray();
            _hosts                   = hosts.ToArray();
            _receiveObservers        = new ReceiveObservable();

            TaskUtil.Await(() => _busObservable.PostCreate(this));
        }
Exemple #10
0
        public MassTransitBus(IHost host, IBusObserver busObservable, IReceiveEndpointConfiguration endpointConfiguration)
        {
            Address          = endpointConfiguration.InputAddress;
            _consumePipe     = endpointConfiguration.ConsumePipe;
            _host            = host;
            _busObservable   = busObservable;
            _receiveEndpoint = endpointConfiguration.ReceiveEndpoint;

            Topology = host.Topology;

            if (LogContext.Current == null)
            {
                throw new ConfigurationException("The LogContext was not set.");
            }

            _logContext = LogContext.Current;

            _publishEndpoint = new PublishEndpoint(_receiveEndpoint);
        }
Exemple #11
0
 public void AddLog(IBusObserver busObserver)
 {
     //_rabbitMqBusFactoryConfigurator.c
 }
 public ConnectHandle ConnectBusObserver(IBusObserver observer)
 {
     return(_configurator.ConnectBusObserver(observer));
 }
 /// <summary>
 /// Connect an observer to the bus, to observe creation, start, stop, fault events.
 /// </summary>
 /// <param name="configurator"></param>
 /// <param name="observer"></param>
 public static void BusObserver(this IBusFactoryConfigurator configurator, IBusObserver observer)
 {
     configurator.ConnectBusObserver(observer);
 }
 public ConnectHandle ConnectBusObserver(IBusObserver observer)
 {
     return(BusObservable.Connect(observer));
 }
 /// <summary>
 /// Connect an observer to the bus, to observe creation, start, stop, fault events.
 /// </summary>
 /// <param name="configurator"></param>
 /// <param name="observer"></param>
 public static void BusObserver(IBusFactoryConfigurator configurator, IBusObserver observer)
 {
     configurator.AddBusFactorySpecification(new BusObserverSpecification(() => observer));
 }
 public Handle(IEnumerable <HostHandle> hostHandles, IBus bus, IBusObserver busObserver)
 {
     _bus         = bus;
     _busObserver = busObserver;
     _hostHandles = hostHandles.ToArray();
 }
 public ConnectHandle ConnectBusObserver(IBusObserver observer)
 {
     return(_busObservers.Connect(observer));
 }
Exemple #18
0
 public ConnectHandle ConnectBusObserver(IBusObserver observer)
 {
     return _busObservable.Connect(observer);
 }
        public bool Start(HostControl hostControl)
        {
            var saga = new OrderStateMachine();
            var repo = new InMemorySagaRepository <Order>();

            _busObserver = new BusObserver();

            _busControl = BusConfigurator.ConfigureBus((cfg, host) =>
            {
                cfg.AddBusFactorySpecification(new BusObserverSpecification(() => _busObserver));

                cfg.ReceiveEndpoint(host, RabbitMqConstants.SagaQueue, e =>
                {
                    cfg.UseNLog(new LogFactory());

                    cfg.EnablePerformanceCounters();

                    e.UseRetry(Retry.Interval(5, TimeSpan.FromSeconds(5)));


                    e.UseCircuitBreaker(cb =>
                    {
                        cb.TripThreshold = 15;
                        cb.ResetInterval(TimeSpan.FromMinutes(5));
                        cb.TrackingPeriod  = TimeSpan.FromMinutes(1);
                        cb.ActiveThreshold = 10;
                    });

                    //e.UseRetry(Retry.Except(typeof(ArgumentException),
                    //    typeof(NotAcceptedStateMachineException)).Interval(10, TimeSpan.FromSeconds(5)));
                    //TODO: Create a custom filter policy for inner exceptions on Sagas: http://stackoverflow.com/questions/37041293/how-to-use-masstransits-retry-policy-with-sagas

                    e.StateMachineSaga(saga, repo);
                });
            });

            var consumeObserver = new LogConsumeObserver();

            _busControl.ConnectConsumeObserver(consumeObserver);

            //TODO: See how to do versioning of messages (best practices)
            //http://masstransit.readthedocs.io/en/master/overview/versioning.html

            try
            {
                _busHandle = _busControl.Start();
                Console.WriteLine("Saga active.. Press enter to exit");

                GlobalConfiguration.Configuration.UseMongoStorage("mongodb://localhost:27017", "hangfire-masstransit");

                hangfireServer = new BackgroundJobServer();
                Console.WriteLine("Hangfire Server started. Press any key to exit...");

                WebApp.Start <Startup>("http://localhost:1235");
            }
            catch
            {
                hangfireServer.Dispose();
                _busControl.Stop();

                throw;
            }

            return(true);
        }