示例#1
0
        private string RabbitConnectionChecker()
        {
            var connstr = Config.GetString("jobmoni:rabbitconn", "");

            if (string.IsNullOrWhiteSpace(connstr))
            {
                return(null);
            }
            try
            {
                RabbitMQ.Client.ConnectionFactory cf = new RabbitMQ.Client.ConnectionFactory();
                cf.AutomaticRecoveryEnabled = true;
                cf.Uri = connstr;
                cf.RequestedConnectionTimeout = 5000;
                var currConn = cf.CreateConnection();
                var md       = currConn.CreateModel();
                md.Close();
                currConn.Close();
                return(null);
            }
            catch (Exception ex)
            {
                return("rabbit状态异常!");
            }
        }
示例#2
0
        public void Should_be_able_to_configure_EasyNetQ_to_allow_message_with_a_blank_type_field()
        {
            var are        = new System.Threading.AutoResetEvent(false);
            var validation = new NullMessageValidator();
            var bus        = RabbitHutch.CreateBus("host=localhost", r =>
                                                   r.Register <IMessageValidationStrategy>(x => validation));

            bus.Subscribe <MyMessage>("null_validation_test", message =>
            {
                Console.Out.WriteLine("Got message: {0}", message.Text);
                are.Set();
            });

            // now use the basic client API to publish some JSON to the message type exchange ...
            var factory = new RabbitMQ.Client.ConnectionFactory
            {
                HostName = "localhost"
            };

            using (var connection = factory.CreateConnection())
                using (var channel = connection.CreateModel())
                {
                    const string exchange   = "EasyNetQ_Tests_MyMessage:EasyNetQ_Tests";
                    const string routingKey = "#";
                    const string bodyString = "{ Text: \"Hello from Mr Raw :)\" }";
                    var          body       = System.Text.Encoding.UTF8.GetBytes(bodyString);
                    var          properties = channel.CreateBasicProperties();
                    channel.BasicPublish(exchange, routingKey, properties, body);
                }

            are.WaitOne(1000);
        }
        protected override void Load(ContainerBuilder builder)
        {
            builder.RegisterInstance(_settings.ContextNames).AsSelf().SingleInstance();
            builder.Register(context => new AutofacDependencyResolver(context)).As <IDependencyResolver>()
            .SingleInstance();
            builder.RegisterInstance(new CqrsContextNamesSettings()).AsSelf().SingleInstance();

            var rabbitMqSettings = new RabbitMQ.Client.ConnectionFactory
            {
                Uri = new Uri(_settings.ConnectionString, UriKind.Absolute)
            };
            var messagingEngine = new MessagingEngine(_log, new TransportResolver(
                                                          new Dictionary <string, TransportInfo>
            {
                {
                    "RabbitMq",
                    new TransportInfo(rabbitMqSettings.Endpoint.ToString(), rabbitMqSettings.UserName,
                                      rabbitMqSettings.Password, "None", "RabbitMq")
                }
            }), new RabbitMqTransportFactory());

            builder.RegisterType <EodStartedProjection>().AsSelf();

            builder.Register(ctx => CreateEngine(ctx, messagingEngine))
            .As <ICqrsEngine>()
            .SingleInstance()
            .AutoActivate();
        }
示例#4
0
        protected virtual RabbitMQ.Client.ConnectionFactory BuildConnectionFactory(Uri endpointUri)
        {
            var factory = new RabbitMQ.Client.ConnectionFactory
            {
                Uri = endpointUri,
                AutomaticRecoveryEnabled = true,
                TopologyRecoveryEnabled  = true
            };
            var assembly   = typeof(Broker).GetTypeInfo().Assembly;
            var properties = new Dictionary <String, Object>
            {
                { "client_api", ProductName(assembly) },
                { "client_version", assembly.GetName().Version.ToString() },
                { "hostname", Environment.MachineName },
                { "connected_on", _dateTimeProvider.UtcNow().ToString("R") },
                { "process_id", Process.GetCurrentProcess().Id.ToString() },
                { "process_name", Process.GetCurrentProcess().ProcessName }
            };
            var entryAssembly = Assembly.GetEntryAssembly();

            if (entryAssembly != null)
            {
                properties.Add("entry_assembly", entryAssembly.GetName().Name);
            }

            factory.ClientProperties = properties;

            return(factory);
        }
示例#5
0
        public virtual ITunnel Create(string hostName, string virtualHost, string username, string password, IRabbitWatcher watcher)
        {
            var rabbitWatcher = watcher ?? Global.DefaultWatcher;
            var connectionFactory = new RabbitMQ.Client.ConnectionFactory
                                        {
                                            HostName = hostName,
                                            VirtualHost = virtualHost,
                                            UserName = username,
                                            Password = password
                                        };

            var durableConnection = new DurableConnection(new DefaultRetryPolicy(), rabbitWatcher, connectionFactory);
            var errorHandler = new ConsumerErrorHandler(connectionFactory, Global.DefaultSerializer, rabbitWatcher);
            var msgHandlerFactory = new DefaultMessageHandlerFactory(errorHandler, Global.DefaultSerializer, rabbitWatcher);
            var consumerManager = new ConsumerManager(rabbitWatcher, msgHandlerFactory, Global.DefaultSerializer);

            var tunnel = new RabbitTunnel(consumerManager,
                                          rabbitWatcher, 
                                          new DefaultRouteFinder(), 
                                          durableConnection,
                                          Global.DefaultSerializer,
                                          Global.DefaultCorrelationIdGenerator,
                                          Global.DefaultPersistentMode);

            tunnel.AddSerializerObserver(errorHandler);
            tunnel.AddSerializerObserver(msgHandlerFactory);
            tunnel.AddSerializerObserver(consumerManager);
            return tunnel;
        }
示例#6
0
        protected override void Load(ContainerBuilder builder)
        {
            builder.Register(context => new AutofacDependencyResolver(context)).As <IDependencyResolver>()
            .SingleInstance();

            var rabbitMqSettings = new RabbitMQ.Client.ConnectionFactory
            {
                Uri = new Uri(_settings.ConnectionString, UriKind.Absolute)
            };


            builder.RegisterAssemblyTypes(GetType().Assembly).Where(t =>
                                                                    new[] { "Saga", "CommandsHandler", "Projection" }.Any(ending => t.Name.EndsWith(ending))).AsSelf();

            builder.Register(ctx => CreateEngine(ctx, new MessagingEngine(
                                                     new LykkeLoggerAdapter <CqrsModule>(ctx.Resolve <ILogger <CqrsModule> >()),
                                                     new TransportResolver(new Dictionary <string, TransportInfo>
            {
                {
                    "RabbitMq",
                    new TransportInfo(rabbitMqSettings.Endpoint.ToString(), rabbitMqSettings.UserName,
                                      rabbitMqSettings.Password, "None", "RabbitMq")
                }
            }),
                                                     new RabbitMqTransportFactory())))
            .As <ICqrsEngine>()
            .SingleInstance()
            .AutoActivate();
        }
示例#7
0
        public Task <(string, bool)> IsHealthy(HttpContext context, bool isDevelopment, CancellationToken cancellationToken = new CancellationToken())
        {
            try
            {
                var factory = new Rmq.Client.ConnectionFactory();
                factory.Uri = new Uri(_rabbitMqConnectionString);

                using (var connection = factory.CreateConnection())
                {
                    if (connection.IsOpen)
                    {
                        return(Task.FromResult((BeatPulseKeys.BEATPULSE_HEALTHCHECK_DEFAULT_OK_MESSAGE, true)));
                    }
                }

                return(Task.FromResult((BeatPulseKeys.BEATPULSE_HEALTHCHECK_DEFAULT_ERROR_MESSAGE, false)));
            }
            catch (Exception ex)
            {
                var message = !isDevelopment
                    ? string.Format(BeatPulseKeys.BEATPULSE_HEALTHCHECK_DEFAULT_ERROR_MESSAGE, Name)
                    : $"Exception {ex.GetType().Name} with message ('{ex.Message}')";

                return(Task.FromResult((message, false)));
            }
        }
示例#8
0
        protected virtual RabbitMQ.Client.ConnectionFactory BuildConnectionFactory(Uri endpointUri)
        {
            var factory = new RabbitMQ.Client.ConnectionFactory
                              {
                                  Uri = endpointUri.ToString(),
                                  AutomaticRecoveryEnabled = true,
                                  TopologyRecoveryEnabled = true
                              };
            var assembly = typeof(Broker).Assembly;
            var properties = new Dictionary<String, Object>
                                 {
                                     { "client_api", ProductName(assembly) },
                                     { "client_version", assembly.GetName().Version.ToString() },
                                     { "net_version", Environment.Version.ToString() },
                                     { "hostname", Environment.MachineName },
                                     { "connected_on", _dateTimeProvider.UtcNow().ToString("R") },
                                     { "process_id", Process.GetCurrentProcess().Id.ToString() },
                                     { "process_name", Process.GetCurrentProcess().ProcessName }
                                 };
            var entryAssembly = Assembly.GetEntryAssembly();

            if (entryAssembly != null)
                properties.Add("entry_assembly", entryAssembly.GetName().Name);

            factory.ClientProperties = properties;

            return factory;
        }
示例#9
0
文件: CqrsModule.cs 项目: alpo-8/MT
        protected override void Load(ContainerBuilder builder)
        {
            builder.RegisterInstance(_settings.ContextNames).AsSelf().SingleInstance();
            builder.Register(context => new AutofacDependencyResolver(context)).As <IDependencyResolver>()
            .SingleInstance();
            builder.RegisterType <CqrsSender>().As <ICqrsSender>()
            .PropertiesAutowired(PropertyWiringOptions.AllowCircularDependencies)
            .SingleInstance();
            builder.RegisterInstance(new CqrsContextNamesSettings()).AsSelf().SingleInstance();

            var rabbitMqSettings = new RabbitMQ.Client.ConnectionFactory
            {
                Uri = _settings.ConnectionString
            };
            var messagingEngine = new MessagingEngine(_log, new TransportResolver(
                                                          new Dictionary <string, TransportInfo>
            {
                {
                    "RabbitMq",
                    new TransportInfo(rabbitMqSettings.Endpoint.ToString(), rabbitMqSettings.UserName,
                                      rabbitMqSettings.Password, "None", "RabbitMq")
                }
            }), new RabbitMqTransportFactory());

            // Sagas & command handlers
            builder.RegisterAssemblyTypes(GetType().Assembly).Where(t =>
                                                                    new [] { "Saga", "CommandsHandler", "Projection" }.Any(ending => t.Name.EndsWith(ending))).AsSelf();

            builder.Register(ctx => CreateEngine(ctx, messagingEngine)).As <ICqrsEngine>().SingleInstance()
            .AutoActivate();
        }
示例#10
0
        protected override void Load(ContainerBuilder builder)
        {
            builder.Register(context => new AutofacDependencyResolver(context)).As <IDependencyResolver>()
            .SingleInstance();

            var rabbitMqSettings = new RabbitMQ.Client.ConnectionFactory
            {
                Uri = new Uri(_settings.ConnectionString, UriKind.Absolute)
            };
            var messagingEngine = new MessagingEngine(_log,
                                                      new TransportResolver(new Dictionary <string, TransportInfo>
            {
                {
                    "RabbitMq",
                    new TransportInfo(rabbitMqSettings.Endpoint.ToString(), rabbitMqSettings.UserName,
                                      rabbitMqSettings.Password, "None", "RabbitMq")
                }
            }),
                                                      new RabbitMqTransportFactory());

            // Sagas & command handlers
            builder.RegisterAssemblyTypes(GetType().Assembly)
            .Where(t => t.Name.EndsWith("Saga") || t.Name.EndsWith("CommandsHandler"))
            .AsSelf();

            builder.Register(ctx => CreateEngine(ctx, messagingEngine))
            .As <ICqrsEngine>()
            .SingleInstance()
            .AutoActivate();
        }
        public void Should_be_able_to_configure_EasyNetQ_to_allow_message_with_a_blank_type_field()
        {
            var are = new System.Threading.AutoResetEvent(false);
            var validation = new NullMessageValidator();
            var bus = RabbitHutch.CreateBus("host=localhost", r =>
                r.Register<IMessageValidationStrategy>(x => validation));

            bus.Subscribe<MyMessage>("null_validation_test", message =>
                {
                    Console.Out.WriteLine("Got message: {0}", message.Text);
                    are.Set();
                });

            // now use the basic client API to publish some JSON to the message type exchange ...
            var factory = new RabbitMQ.Client.ConnectionFactory
                {
                    HostName = "localhost"
                };
            using (var connection = factory.CreateConnection())
            using (var channel = connection.CreateModel())
            {
                const string exchange = "EasyNetQ_Tests_MyMessage:EasyNetQ_Tests";
                const string routingKey = "#";
                const string bodyString = "{ Text: \"Hello from Mr Raw :)\" }";
                var body = System.Text.Encoding.UTF8.GetBytes(bodyString);
                var properties = channel.CreateBasicProperties();
                channel.BasicPublish(exchange, routingKey, properties, body);
            }

            are.WaitOne(1000);
        }
        protected override void Load(ContainerBuilder builder)
        {
            MessagePackSerializerFactory.Defaults.FormatterResolver = MessagePack.Resolvers.ContractlessStandardResolver.Instance;
            var rabbitMqSettings = new RabbitMQ.Client.ConnectionFactory {
                Uri = new Uri(_settings.CurrentValue.SiriusCashoutProcessorJob.Cqrs.RabbitConnectionString)
            };

            builder.Register(context => new AutofacDependencyResolver(context)).As <IDependencyResolver>();
            builder.RegisterType <CashoutCommandHandler>()
            .WithParameter(TypedParameter.From(_settings.CurrentValue.SiriusApiServiceClient.BrokerAccountId))
            .WithParameter(TypedParameter.From(_settings.CurrentValue.SiriusCashoutProcessorJob.RetrySettings.NotEnoughBalanceRetryDelayInSeconds))
            .SingleInstance();

            builder.Register(ctx => new MessagingEngine(ctx.Resolve <ILogFactory>(),
                                                        new TransportResolver(new Dictionary <string, TransportInfo>
            {
                {
                    "RabbitMq",
                    new TransportInfo(rabbitMqSettings.Endpoint.ToString(), rabbitMqSettings.UserName,
                                      rabbitMqSettings.Password, "None", "RabbitMq")
                }
            }),
                                                        new RabbitMqTransportFactory(ctx.Resolve <ILogFactory>()))).As <IMessagingEngine>().SingleInstance();

            const string environment = "lykke";

            builder.Register(ctx =>
            {
                var engine = new CqrsEngine(ctx.Resolve <ILogFactory>(),
                                            ctx.Resolve <IDependencyResolver>(),
                                            ctx.Resolve <IMessagingEngine>(),
                                            new DefaultEndpointProvider(),
                                            true,
                                            Register.DefaultEndpointResolver(new RabbitMqConventionEndpointResolver(
                                                                                 "RabbitMq",
                                                                                 SerializationFormat.MessagePack,
                                                                                 environment: environment)),

                                            Register.EventInterceptors(new DefaultEventLoggingInterceptor(ctx.Resolve <ILogFactory>())),
                                            Register.CommandInterceptors(new DefaultCommandLoggingInterceptor(ctx.Resolve <ILogFactory>())),

                                            Register.BoundedContext(SiriusCashoutProcessorBoundedContext.Name)
                                            .ListeningCommands(typeof(StartCashoutCommand))
                                            .On("commands")
                                            .WithCommandsHandler <CashoutCommandHandler>()
                                            .PublishingEvents(
                                                typeof(CashoutCompletedEvent),
                                                typeof(CashoutFailedEvent)
                                                )
                                            .With("events")
                                            );

                engine.StartPublishers();

                return(engine);
            })
            .As <ICqrsEngine>()
            .SingleInstance()
            .AutoActivate();
        }
        public CqrsEngine CreateEngine()
        {
            var rabbitMqConventionEndpointResolver = new RabbitMqConventionEndpointResolver(
                "RabbitMq",
                SerializationFormat.MessagePack,
                environment: _settings.EnvironmentName);
            var rabbitMqSettings = new RabbitMQ.Client.ConnectionFactory
            {
                Uri = new Uri(_settings.ConnectionString, UriKind.Absolute)
            };

            return(new CqrsEngine(
                       _log,
                       new AutofacDependencyResolver(Mock.Of <IComponentContext>()),
                       new MessagingEngine(_log,
                                           new TransportResolver(new Dictionary <string, TransportInfo>
            {
                {
                    "RabbitMq",
                    new TransportInfo(rabbitMqSettings.Endpoint.ToString(), rabbitMqSettings.UserName,
                                      rabbitMqSettings.Password, "None", "RabbitMq")
                }
            }),
                                           new RabbitMqTransportFactory()),
                       new DefaultEndpointProvider(),
                       false,
                       Register.DefaultEndpointResolver(rabbitMqConventionEndpointResolver),
                       RegisterContext()));
        }
示例#14
0
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            var connectionFactory = new RabbitMQ.Client.ConnectionFactory();

            var connection = connectionFactory.CreateConnection();

            var channel = connection.CreateModel();

            channel.QueueDeclare(queue: "identity.user",
                                 durable: true,
                                 exclusive: false,
                                 autoDelete: false,
                                 arguments: null);


            var consumer = new EventingBasicConsumer(channel);

            consumer.Received += (model, ea) =>
            {
                var body    = ea.Body.ToArray();
                var message = Encoding.UTF8.GetString(body);
                Console.WriteLine(" [x] Received {0}", message);
            };
            channel.BasicConsume(queue: "identity.user",
                                 consumerTag: "consumer",
                                 noLocal: false,
                                 arguments: null,
                                 exclusive: true,
                                 autoAck: true,
                                 consumer: consumer);

            Console.ReadLine();
        }
        public override ITunnel Create(string hostName, string virtualHost, string username, string password, IRabbitWatcher watcher)
        {
            if (RabbitTunnel.Factory is DependencyInjectionTunnelFactory)
            {
                return RabbitTunnel.Factory.Create(hostName, virtualHost, username, password, watcher);
            }

            var rabbitWatcher = watcher ?? Global.DefaultWatcher;
            var connectionFactory = new RabbitMQ.Client.ConnectionFactory
                                        {
                                            HostName = hostName,
                                            VirtualHost = virtualHost,
                                            UserName = username,
                                            Password = password
                                        };

            var durableConnection = new DurableConnection(new DefaultRetryPolicy(), rabbitWatcher, connectionFactory);
            var errorHandler = new ConsumerErrorHandler(connectionFactory, Global.DefaultSerializer, rabbitWatcher);
            
            var msgHandlerFactory = new DefaultMessageHandlerFactory(errorHandler, rabbitWatcher);
            var consumerManager = new ConsumerManager(rabbitWatcher, msgHandlerFactory, Global.DefaultSerializer);

            return new RabbitTunnelWithPriorityQueuesSupport(consumerManager,
                                                             rabbitWatcher, 
                                                             new DefaultRouteFinder(), 
                                                             durableConnection,
                                                             Global.DefaultSerializer,
                                                             Global.DefaultCorrelationIdGenerator,
                                                             Global.DefaultPersistentMode);
        }
示例#16
0
        public override ITunnel Create(string hostName, string virtualHost, string username, string password, IRabbitWatcher watcher)
        {
            if (RabbitTunnel.Factory is DependencyInjectionTunnelFactory)
            {
                return(RabbitTunnel.Factory.Create(hostName, virtualHost, username, password, watcher));
            }

            var rabbitWatcher     = watcher ?? Global.DefaultWatcher;
            var connectionFactory = new RabbitMQ.Client.ConnectionFactory
            {
                HostName    = hostName,
                VirtualHost = virtualHost,
                UserName    = username,
                Password    = password
            };

            var durableConnection = new DurableConnection(new DefaultRetryPolicy(), rabbitWatcher, connectionFactory);
            var errorHandler      = new ConsumerErrorHandler(connectionFactory, Global.DefaultSerializer, rabbitWatcher);

            var msgHandlerFactory = new DefaultMessageHandlerFactory(errorHandler, Global.DefaultSerializer, rabbitWatcher);
            var consumerManager   = new ConsumerManager(rabbitWatcher, msgHandlerFactory, Global.DefaultSerializer);

            var tunnel = new RabbitTunnelWithPriorityQueuesSupport(consumerManager,
                                                                   rabbitWatcher,
                                                                   new DefaultRouteFinder(),
                                                                   durableConnection,
                                                                   Global.DefaultSerializer,
                                                                   Global.DefaultCorrelationIdGenerator,
                                                                   Global.DefaultPersistentMode);

            tunnel.AddSerializerObserver(errorHandler);
            tunnel.AddSerializerObserver(msgHandlerFactory);
            tunnel.AddSerializerObserver(consumerManager);
            return(tunnel);
        }
        public override ITunnel Create(string hostName, string virtualHost, string username, string password, IRabbitWatcher watcher)
        {
            var rabbitWatcher = watcher ?? _burrowResolver.Resolve<IRabbitWatcher>() ?? Global.DefaultWatcher;
            var serializer = _burrowResolver.Resolve<ISerializer>() ?? Global.DefaultSerializer;
            var connectionFactory = new RabbitMQ.Client.ConnectionFactory
                                        {
                                            HostName = hostName,
                                            VirtualHost = virtualHost,
                                            UserName = username,
                                            Password = password
                                        };
            var durableConnection = new DurableConnection(_burrowResolver.Resolve<IRetryPolicy>() ?? new DefaultRetryPolicy(), 
                                                          rabbitWatcher, 
                                                          connectionFactory);

            Func<IConsumerErrorHandler> errorHandler = () => new ConsumerErrorHandler(connectionFactory,
                                                                                      serializer,
                                                                                      rabbitWatcher);

            Func<IMessageHandlerFactory> handlerFactory = () => new DefaultMessageHandlerFactory(_burrowResolver.Resolve<IConsumerErrorHandler>() ?? errorHandler(), rabbitWatcher);


            Func<IConsumerManager> consumerManager = () => new ConsumerManager(rabbitWatcher,
                                                                               _burrowResolver.Resolve<IMessageHandlerFactory>() ?? handlerFactory(),
                                                                               serializer);

            return new RabbitTunnel(_burrowResolver.Resolve<IConsumerManager>() ?? consumerManager(),
                                    rabbitWatcher,
                                    _burrowResolver.Resolve<IRouteFinder>() ?? new DefaultRouteFinder(),
                                    durableConnection,
                                    serializer,
                                    _burrowResolver.Resolve<ICorrelationIdGenerator>() ?? Global.DefaultCorrelationIdGenerator,
                                    Global.DefaultPersistentMode);
        }
        private void RegisterCqrsEngine(IReloadingManagerWithConfiguration <BackOfficeBundle> appSettings,
                                        ContainerBuilder builder)
        {
            builder.Register(context => new AutofacDependencyResolver(context))
            .As <IDependencyResolver>()
            .SingleInstance();

            var rabbitSettings = new RabbitMQ.Client.ConnectionFactory
            {
                Uri = appSettings.CurrentValue.PayBackOffice.RabbitMq.SagasConnectionString
            };

            builder.RegisterType <EmployeeRegistrationErrorProjection>().SingleInstance();

            builder.Register(ctx =>
            {
                var logFactory = ctx.Resolve <ILogFactory>();
                return(new MessagingEngine(
                           logFactory,
                           new TransportResolver(new Dictionary <string, TransportInfo>
                {
                    {
                        "RabbitMq",
                        new TransportInfo(
                            rabbitSettings.Endpoint.ToString(),
                            rabbitSettings.UserName,
                            rabbitSettings.Password,
                            "None", "RabbitMq")
                    }
                }),
                           new RabbitMqTransportFactory(logFactory)));
            });

            builder.Register(ctx => new CqrsEngine(
                                 ctx.Resolve <ILogFactory>(),
                                 ctx.Resolve <IDependencyResolver>(),
                                 ctx.Resolve <MessagingEngine>(),
                                 new DefaultEndpointProvider(),
                                 true,
                                 Register.DefaultEndpointResolver(new RabbitMqConventionEndpointResolver(
                                                                      "RabbitMq",
                                                                      Lykke.Messaging.Serialization.SerializationFormat.ProtoBuf,
                                                                      environment: "lykke")),

                                 Register.BoundedContext("lykkepay-employee-registration-ui")
                                 .PublishingCommands(typeof(RegisterEmployeeCommand), typeof(UpdateEmployeeCommand))
                                 .To("lykkepay-employee-registration")
                                 .With("commands")
                                 .ListeningEvents(typeof(EmployeeRegistrationFailedEvent), typeof(EmployeeUpdateFailedEvent))
                                 .From("lykkepay-employee-registration")
                                 .On("paybo")
                                 .WithProjection(
                                     typeof(EmployeeRegistrationErrorProjection),
                                     "lykkepay-employee-registration")
                                 ))
            .As <ICqrsEngine>()
            .SingleInstance()
            .AutoActivate();
        }
示例#19
0
        protected override void Load(ContainerBuilder builder)
        {
            MessagePackSerializerFactory.Defaults.FormatterResolver = MessagePack.Resolvers.ContractlessStandardResolver.Instance;
            var rabbitMqSettings = new RabbitMQ.Client.ConnectionFactory
            {
                Uri = new Uri(_settings.SagasRabbitMq.RabbitConnectionString)
            };

            builder.Register(context => new AutofacDependencyResolver(context)).As <IDependencyResolver>().SingleInstance();

            builder.RegisterType <HistoryExportProjection>().SingleInstance();

            var messagingEngine = new MessagingEngine(_log,
                                                      new TransportResolver(new Dictionary <string, TransportInfo>
            {
                { "RabbitMq", new TransportInfo(rabbitMqSettings.Endpoint.ToString(), rabbitMqSettings.UserName, rabbitMqSettings.Password, "None", "RabbitMq") }
            }),
                                                      new RabbitMqTransportFactory());

            builder
            .Register(ctx =>
            {
                const string defaultPipeline = "commands";
                const string defaultRoute    = "self";

                var engine = new CqrsEngine(_log,
                                            ctx.Resolve <IDependencyResolver>(),
                                            messagingEngine,
                                            new DefaultEndpointProvider(),
                                            true,
                                            Register.DefaultEndpointResolver(new RabbitMqConventionEndpointResolver(
                                                                                 "RabbitMq",
                                                                                 SerializationFormat.MessagePack,
                                                                                 environment: "lykke",
                                                                                 exclusiveQueuePostfix: "k8s")),

                                            Register.BoundedContext("apiv2")
                                            .PublishingCommands(typeof(CreateCashoutCommand), typeof(CreateSwiftCashoutCommand))
                                            .To(OperationsBoundedContext.Name).With(defaultPipeline)
                                            .ListeningEvents(
                                                typeof(ClientHistoryExpiredEvent),
                                                typeof(ClientHistoryExportedEvent))
                                            .From(HistoryExportBuilderBoundedContext.Name).On(defaultRoute)
                                            .WithProjection(typeof(HistoryExportProjection), HistoryExportBuilderBoundedContext.Name)
                                            .PublishingCommands(typeof(ConfirmCommand))
                                            .To(OperationsBoundedContext.Name).With(defaultPipeline),

                                            Register.DefaultRouting
                                            .PublishingCommands(typeof(ExportClientHistoryCommand))
                                            .To(HistoryExportBuilderBoundedContext.Name).With(defaultPipeline)
                                            );
                engine.StartPublishers();
                return(engine);
            })
            .As <ICqrsEngine>()
            .SingleInstance()
            .AutoActivate();
        }
示例#20
0
        static void Main(string[] args)
        {
            var factory = new RabbitMQ.Client.ConnectionFactory()
            {
                HostName = "localhost"
            };

            TaskManager.Run(factory, new MatchingManager());
        }
示例#21
0
        protected override void Load(ContainerBuilder builder)
        {
            var rabbitMqSettings = new RabbitMQ.Client.ConnectionFactory {
                Uri = _appSettings.CurrentValue.SagasRabbitMq.RabbitConnectionString
            };

            builder.Register(context => new AutofacDependencyResolver(context)).As <IDependencyResolver>().SingleInstance();
            MessagePackSerializerFactory.Defaults.FormatterResolver = MessagePack.Resolvers.ContractlessStandardResolver.Instance;

            builder.RegisterType <AssetsProjection>();

            builder.Register(ctx => new MessagingEngine(ctx.Resolve <ILogFactory>(),
                                                        new TransportResolver(new Dictionary <string, TransportInfo>
            {
                { "RabbitMq", new TransportInfo(rabbitMqSettings.Endpoint.ToString(), rabbitMqSettings.UserName, rabbitMqSettings.Password, "None", "RabbitMq") }
            }),
                                                        new RabbitMqTransportFactory(ctx.Resolve <ILogFactory>()))).As <IMessagingEngine>().SingleInstance();

            builder.Register(ctx =>
            {
                var msgPackResolver = new RabbitMqConventionEndpointResolver(
                    "RabbitMq",
                    SerializationFormat.MessagePack,
                    environment: "lykke",
                    exclusiveQueuePostfix: "k8s");

                var engine = new CqrsEngine(
                    ctx.Resolve <ILogFactory>(),
                    ctx.Resolve <IDependencyResolver>(),
                    ctx.Resolve <IMessagingEngine>(),
                    new DefaultEndpointProvider(),
                    true,

                    Register.EventInterceptors(new DefaultEventLoggingInterceptor(ctx.Resolve <ILogFactory>())),

                    Register.DefaultEndpointResolver(msgPackResolver),

                    Register.BoundedContext(LimitationsBoundedContext.Name)
                    .ListeningEvents(typeof(AssetCreatedEvent), typeof(AssetUpdatedEvent))
                    .From(Assets.BoundedContext.Name).On("events")
                    .WithProjection(typeof(AssetsProjection), Assets.BoundedContext.Name)

                    .PublishingEvents(
                        typeof(ClientDepositEvent),
                        typeof(ClientWithdrawEvent)
                        ).With("events")
                    .WithEndpointResolver(msgPackResolver)
                    );

                engine.StartPublishers();
                return(engine);
            })
            .As <ICqrsEngine>()
            .AutoActivate()
            .SingleInstance();
        }
        public override ITunnel Create(string hostName, string virtualHost, string username, string password, IRabbitWatcher watcher)
        {
            var rabbitWatcher     = watcher ?? _burrowResolver.Resolve <IRabbitWatcher>() ?? Global.DefaultWatcher;
            var serializer        = _burrowResolver.Resolve <ISerializer>() ?? Global.DefaultSerializer;
            var connectionFactory = new RabbitMQ.Client.ConnectionFactory
            {
                HostName    = hostName,
                VirtualHost = virtualHost,
                UserName    = username,
                Password    = password
            };
            var durableConnection = new DurableConnection(_burrowResolver.Resolve <IRetryPolicy>() ?? new DefaultRetryPolicy(),
                                                          rabbitWatcher,
                                                          connectionFactory);

            var abc = new ObjectObserver <IObserver <ISerializer> >();

            Func <IConsumerErrorHandler> errorHandler = () =>
            {
                var handdler = new ConsumerErrorHandler(connectionFactory, serializer, rabbitWatcher);
                abc.FireEvent(handdler);
                return(handdler);
            };

            Func <IMessageHandlerFactory> handlerFactory = () =>
            {
                var factory = new DefaultMessageHandlerFactory(_burrowResolver.Resolve <IConsumerErrorHandler>() ?? errorHandler(),
                                                               serializer,
                                                               rabbitWatcher);
                abc.FireEvent(factory);
                return(factory);
            };


            Func <IConsumerManager> consumerManager = () =>
            {
                var manager = new ConsumerManager(rabbitWatcher,
                                                  _burrowResolver.Resolve <IMessageHandlerFactory>() ?? handlerFactory(),
                                                  serializer);
                abc.FireEvent(manager);
                return(manager);
            };

            var tunnel = new RabbitTunnel(_burrowResolver.Resolve <IConsumerManager>() ?? consumerManager(),
                                          rabbitWatcher,
                                          _burrowResolver.Resolve <IRouteFinder>() ?? new DefaultRouteFinder(),
                                          durableConnection,
                                          serializer,
                                          _burrowResolver.Resolve <ICorrelationIdGenerator>() ?? Global.DefaultCorrelationIdGenerator,
                                          Global.DefaultPersistentMode);

            abc.ObjectCreated += tunnel.AddSerializerObserver;

            return(tunnel);
        }
示例#23
0
        protected override void Load(ContainerBuilder builder)
        {
            Messaging.Serialization.MessagePackSerializerFactory.Defaults.FormatterResolver = MessagePack.Resolvers.ContractlessStandardResolver.Instance;
            var rabbitMqSagasSettings = new RabbitMQ.Client.ConnectionFactory {
                Uri = _settings.CurrentValue.SwiftWithdrawalService.Cqrs.RabbitConnectionString
            };

            builder.Register(context => new AutofacDependencyResolver(context)).As <IDependencyResolver>();

            var messagingEngine = new MessagingEngine(_log,
                                                      new TransportResolver(new Dictionary <string, TransportInfo>
            {
                { "SagasRabbitMq", new TransportInfo(rabbitMqSagasSettings.Endpoint.ToString(), rabbitMqSagasSettings.UserName, rabbitMqSagasSettings.Password, "None", "RabbitMq") }
            }),
                                                      new RabbitMqTransportFactory());

            var sagasEndpointResolver = new RabbitMqConventionEndpointResolver(
                "SagasRabbitMq",
                "messagepack",
                environment: "lykke",
                exclusiveQueuePostfix: "k8s");

            builder.RegisterType <SwiftCashoutRequestCommandHandler>().SingleInstance();
            builder.RegisterType <SwiftRequestLogProjection>().SingleInstance();



            builder.Register(ctx =>
            {
                string commandsRoute = "commands";
                string eventsRoute   = "events";

                return(new CqrsEngine(_log,
                                      ctx.Resolve <IDependencyResolver>(),
                                      messagingEngine,
                                      new DefaultEndpointProvider(),
                                      true,
                                      Register.DefaultEndpointResolver(sagasEndpointResolver),

                                      Register.BoundedContext(SwiftWithdrawalBoundedContext.Name)
                                      .ListeningCommands(typeof(SwiftCashoutCreateCommand))
                                      .On(commandsRoute)
                                      .WithCommandsHandler <SwiftCashoutRequestCommandHandler>()
                                      .PublishingEvents(typeof(SwiftCashoutCreatedEvent))
                                      .With(eventsRoute)

                                      .ListeningEvents(typeof(SwiftCashoutCreatedEvent))
                                      .From(SwiftWithdrawalBoundedContext.Name)
                                      .On(eventsRoute)
                                      .WithProjection(typeof(SwiftRequestLogProjection), SwiftWithdrawalBoundedContext.Name)));
            })
            .As <ICqrsEngine>()
            .SingleInstance()
            .AutoActivate();
        }
示例#24
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddDbContext <ApplicationDbContext>(options =>
                                                         options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

            services.AddIdentity <ApplicationUser, IdentityRole>()
            .AddEntityFrameworkStores <ApplicationDbContext>()
            .AddDefaultTokenProviders();

            // Add application services.
            services.AddTransient <IEmailSender, EmailSender>();

            services.AddMvc();
            AutoMapper.Mapper.Initialize(c => c.AddProfile <ILanni.FarmMarket.Repository.Mongo.AutoMapperProfile>());
            Elasticsearch.Net.StaticConnectionPool pool = new StaticConnectionPool(new[] { new Uri("http://localhost:9200") });
            ConnectionSettings estSettings = new ConnectionSettings(pool);

            estSettings.BasicAuthentication("elastic", "123456");
            estSettings.InferMappingFor <Models.Product>(d => d.IdProperty(p => p.Id).IndexName("product").TypeName("product"));
            ElasticClient client = new ElasticClient(estSettings);

            services.AddSingleton <ElasticClient>(client);

            MongoClientSettings mSettings = new MongoClientSettings()
            {
                Credential = MongoCredential.CreateCredential("admin", "sa", "1"),
                Server     = new MongoServerAddress("127.0.0.1", 27017),
            };
            MongoClient mClient = new MongoClient(mSettings);

            services.AddSingleton <MongoClient>(mClient);

            services.AddSingleton <ILanni.FarmMarket.MQ.Settings>(new ILanni.FarmMarket.MQ.Settings());

            var rmqConnFactory = new RabbitMQ.Client.ConnectionFactory()
            {
                UserName = "******",
                Password = "******"
            };

            services.AddSingleton <RabbitMQ.Client.ConnectionFactory>(rmqConnFactory);

            PoolingSettings mqSetting = new PoolingSettings()
            {
                MaxChannelPerConnection = 5, MaxConnections = 2
            };
            ChannelPool channelPool = new ChannelPool(rmqConnFactory, mqSetting);

            services.AddSingleton(channelPool);

            services.AddScoped <ProductRepository>();
            services.AddScoped <ProductPublisher>();
            services.AddScoped <ProductService>();
        }
示例#25
0
        static void Main(string[] args)
        {
            var connectionFactory = new RabbitMQ.Client.ConnectionFactory()
            {
                Password = Password,
                UserName = UserName,
                HostName = HostName
            };

            var connection = connectionFactory.CreateConnection();
            var model      = connection.CreateModel();
        }
示例#26
0
        protected override void Load(ContainerBuilder builder)
        {
            MessagePackSerializerFactory.Defaults.FormatterResolver = MessagePack.Resolvers.ContractlessStandardResolver.Instance;
            var rabbitMqSettings = new RabbitMQ.Client.ConnectionFactory
            {
                Uri = new Uri(_settings.RabbitConnectionString)
            };

            builder.Register(context => new AutofacDependencyResolver(context)).As <IDependencyResolver>().SingleInstance();

            builder
            .Register(ctx =>
            {
                var logFactory = ctx.Resolve <ILogFactory>();

                var messagingEngine = new MessagingEngine(
                    logFactory,
                    new TransportResolver(new Dictionary <string, TransportInfo>
                {
                    {
                        "RabbitMq",
                        new TransportInfo(rabbitMqSettings.Endpoint.ToString(),
                                          rabbitMqSettings.UserName,
                                          rabbitMqSettings.Password,
                                          "None",
                                          "RabbitMq")
                    }
                }),
                    new RabbitMqTransportFactory(logFactory));

                const string defaultPipeline = "commands";

                var engine = new CqrsEngine(logFactory,
                                            ctx.Resolve <IDependencyResolver>(),
                                            messagingEngine,
                                            new DefaultEndpointProvider(),
                                            true,
                                            Register.DefaultEndpointResolver(new RabbitMqConventionEndpointResolver(
                                                                                 "RabbitMq",
                                                                                 SerializationFormat.MessagePack,
                                                                                 environment: "lykke",
                                                                                 exclusiveQueuePostfix: "k8s")),

                                            Register.BoundedContext("hft-api")
                                            .PublishingCommands(typeof(CreateCashoutCommand))
                                            .To(OperationsBoundedContext.Name).With(defaultPipeline));
                engine.StartPublishers();
                return(engine);
            })
            .As <ICqrsEngine>()
            .SingleInstance()
            .AutoActivate();
        }
示例#27
0
        protected override void Load(ContainerBuilder builder)
        {
            string eventsRoute = "events";

            MessagePackSerializerFactory.Defaults.FormatterResolver = MessagePack.Resolvers.ContractlessStandardResolver.Instance;
            var rabbitMqSagasSettings = new RabbitMQ.Client.ConnectionFactory {
                Uri = _settings.CurrentValue.SagasRabbitMq.RabbitConnectionString
            };

            builder.Register(context => new AutofacDependencyResolver(context)).As <IDependencyResolver>();

            builder.RegisterType <RegistrationSaga>().SingleInstance();

            builder.Register(ctx =>
            {
                var logFactory = ctx.Resolve <ILogFactory>();

                var messagingEngine = new MessagingEngine(logFactory,
                                                          new TransportResolver(new Dictionary <string, TransportInfo>
                {
                    {
                        "SagasRabbitMq",
                        new TransportInfo(rabbitMqSagasSettings.Endpoint.ToString(),
                                          rabbitMqSagasSettings.UserName, rabbitMqSagasSettings.Password, "None", "RabbitMq")
                    }
                }),
                                                          new RabbitMqTransportFactory(logFactory));

                var sagasEndpointResolver = new RabbitMqConventionEndpointResolver(
                    "SagasRabbitMq",
                    SerializationFormat.MessagePack,
                    environment: "lykke",
                    exclusiveQueuePostfix: "k8s");

                return(new CqrsEngine(logFactory,
                                      new AutofacDependencyResolver(ctx.Resolve <IComponentContext>()),
                                      messagingEngine,
                                      new DefaultEndpointProvider(),
                                      true,
                                      false, //don't log input messages
                                      Register.DefaultEndpointResolver(sagasEndpointResolver),

                                      Register.Saga <RegistrationSaga>("regulation-registration-saga")
                                      .ListeningEvents(typeof(ClientRegisteredEvent))
                                      .From(RegistrationBoundedContext.Name).On(eventsRoute)
                                      .WithEndpointResolver(sagasEndpointResolver)
                                      .ProcessingOptions(eventsRoute).MultiThreaded(2).QueueCapacity(256)
                                      ));
            })
            .As <ICqrsEngine>()
            .AutoActivate()
            .SingleInstance();
        }
示例#28
0
        protected override void Load(ContainerBuilder builder)
        {
            RegisterChaosKitty(builder);

            builder.Register(context => new AutofacDependencyResolver(context)).As <IDependencyResolver>().SingleInstance();

            RegisterComponents(builder);

            const string settlementTransport = "Settlement";
            var          mainSettings        = new RabbitMQ.Client.ConnectionFactory
            {
                Uri = _appSettings.CurrentValue.PaySettlementCqrs.ConnectionString
            };

            builder.Register(ctx =>
            {
                var logFactory = ctx.Resolve <ILogFactory>();

                var settlementBroker = mainSettings.Endpoint.ToString();

                var settlementMessagingEngine = new MessagingEngine(logFactory,
                                                                    new TransportResolver(new Dictionary <string, TransportInfo>
                {
                    {
                        settlementTransport,
                        new TransportInfo(settlementBroker, mainSettings.UserName, mainSettings.Password, "None",
                                          _appSettings.CurrentValue.PaySettlementCqrs.Messaging)
                    }
                }),
                                                                    new RabbitMqTransportFactory(logFactory));

                return(new CqrsEngine(logFactory,
                                      ctx.Resolve <IDependencyResolver>(),
                                      settlementMessagingEngine,
                                      new DefaultEndpointProvider(),
                                      true,
                                      Register.DefaultEndpointResolver(new RabbitMqConventionEndpointResolver(
                                                                           settlementTransport,
                                                                           _appSettings.CurrentValue.PaySettlementCqrs.SerializationFormat,
                                                                           environment: _appSettings.CurrentValue.PaySettlementCqrs.Environment)),

                                      Register.BoundedContext(InternalBoundedContext)
                                      .ListeningEvents(typeof(SettlementTransferToMarketQueuedEvent),
                                                       typeof(SettlementTransferredToMerchantEvent), typeof(SettlementErrorEvent))
                                      .From(_appSettings.CurrentValue.PaySettlementCqrs.SettlementBoundedContext)
                                      .On(_appSettings.CurrentValue.PaySettlementCqrs.EventsRoute)
                                      .WithProjection(ctx.Resolve <SettlementProjection>(),
                                                      _appSettings.CurrentValue.PaySettlementCqrs.SettlementBoundedContext)
                                      ));
            })
            .As <ICqrsEngine>().SingleInstance().AutoActivate();
        }
示例#29
0
 public QueuePushHandle()
 {
     sqlDb   = new SqlDb(QT.Entities.Server.ConnectionStringCrawler);
     factory = new RabbitMQ.Client.ConnectionFactory()
     {
         HostName = QT.Entities.Server.RabbitMQ_Host,
         Port     = QT.Entities.Server.RabbitMQ_Port,
         UserName = QT.Entities.Server.RabbitMQ_User,
         Password = QT.Entities.Server.RabbitMQ_Pass
     };
     connection = factory.CreateConnection();
     chanel     = connection.CreateModel();
 }
示例#30
0
        public void SubscribeToQueue(string queue)
        {
            RabbitMQ.Client.ConnectionFactory config = new RabbitMQ.Client.ConnectionFactory();
            config.HostName    = Configuration.RabbitMQNotificationServer;
            config.UserName    = Configuration.RabbitMQNotificationUserNameConsumer;
            config.Password    = Configuration.RabbitMQNotificationUserPasswordConsumer;
            config.VirtualHost = Configuration.RabbitMQVHostNotification;

            eventLogRepository.WriteInformationLog(string.Format("Subscribing to notification queue: {0}", queue));

            this.listenForQueueMessagesTask = Task.Factory.StartNew
                                                  (() => genericSubscriptionQueue.Subscribe(config, queue));
        }
示例#31
0
        public void Publish <TEvent>(TEvent @event)
            where TEvent : Domain.Core.Events.Event
        {
            try
            {
                var factory =
                    new RabbitMQ.Client.ConnectionFactory
                {
                    UserName = "******",
                    Password = "******",
                    HostName = "localhost",
                };

                string eventTypeName = @event.TypeName;

                string queueName    = eventTypeName;
                string exchangeName = string.Empty;

                using (var connection = factory.CreateConnection())
                {
                    using (var channel = connection.CreateModel())
                    {
                        channel.QueueDeclare
                            (queue: queueName,
                            durable: false,
                            exclusive: false,
                            autoDelete: false,
                            arguments: null);

                        string message =
                            Newtonsoft.Json.JsonConvert.SerializeObject(@event);

                        byte[] body =
                            System.Text.Encoding.UTF8.GetBytes(message);

                        channel.BasicPublish
                            (exchange: exchangeName,
                            routingKey: queueName,
                            mandatory: false,
                            basicProperties: null,
                            body: body);

                        System.Console.WriteLine($"Sent message: { message }");
                    }
                }
            }
            catch (System.Exception ex)
            {
                System.Console.WriteLine(ex.Message);
            }
        }
        protected override void Load(ContainerBuilder builder)
        {
            MessagePackSerializerFactory.Defaults.FormatterResolver = MessagePack.Resolvers.ContractlessStandardResolver.Instance;

            builder.Register(context => new AutofacDependencyResolver(context)).As <IDependencyResolver>().SingleInstance();

            var rabbitMqSettings = new RabbitMQ.Client.ConnectionFactory {
                Uri = _settings.CurrentValue.MarketDataService.Cqrs.ConnectionString
            };

            builder.Register(ctx =>
            {
                var logFactory      = ctx.Resolve <ILogFactory>();
                var broker          = rabbitMqSettings.Endpoint.ToString();
                var messagingEngine = new MessagingEngine(logFactory,
                                                          new TransportResolver(new Dictionary <string, TransportInfo>
                {
                    { "RabbitMq", new TransportInfo(broker, rabbitMqSettings.UserName, rabbitMqSettings.Password, "None", "RabbitMq") }
                }),
                                                          new RabbitMqTransportFactory(logFactory));

                var engine = new CqrsEngine(logFactory,
                                            ctx.Resolve <IDependencyResolver>(),
                                            messagingEngine,
                                            new DefaultEndpointProvider(),
                                            true,
                                            Register.DefaultEndpointResolver(new RabbitMqConventionEndpointResolver(
                                                                                 "RabbitMq",
                                                                                 SerializationFormat.MessagePack,
                                                                                 environment: "lykke",
                                                                                 exclusiveQueuePostfix: "marketdata")),

                                            Register.CommandInterceptors(new DefaultCommandLoggingInterceptor(logFactory)),
                                            Register.EventInterceptors(new DefaultEventLoggingInterceptor(logFactory)),

                                            Register.BoundedContext(MarketDataBoundedContext.Name)
                                            .WithAssetsReadModel(route: System.Environment.MachineName)
                                            .PublishingEvents(
                                                typeof(MarketDataChangedEvent)
                                                )
                                            .With("events")
                                            );

                engine.StartPublishers();
                return(engine);
            })
            .As <ICqrsEngine>()
            .AutoActivate()
            .SingleInstance();
        }
示例#33
0
        public RabbitMQ.Client.ConnectionFactory RabbitMqConnection()
        {
            var factory = new RabbitMQ.Client.ConnectionFactory
            {
                HostName            = ConfigurationManager.AppSettings["MessagingQueueHostAddress"],
                UserName            = ConfigurationManager.AppSettings["RabbitMQUserName"],
                Password            = ConfigurationManager.AppSettings["RabbitMQPassword"],
                VirtualHost         = ConfigurationManager.AppSettings["RabbitMQVirtualHost"],
                Port                = Convert.ToInt32(ConfigurationManager.AppSettings["RabbitMQPort"]),
                ContinuationTimeout = TimeSpan.FromHours(1)
            };

            return(factory);
        }
        public void SubscribeToQueue()
        {
            RabbitMQ.Client.ConnectionFactory config = new RabbitMQ.Client.ConnectionFactory();
            config.HostName    = Configuration.RabbitMQConfirmationServer;
            config.UserName    = Configuration.RabbitMQUserNameConsumer;
            config.Password    = Configuration.RabbitMQUserPasswordConsumer;
            config.VirtualHost = Configuration.RabbitMQVHostConfirmation;

            _log.WriteInformationLog
                (string.Format("Subscribing to order updates queue: {0}", Configuration.RabbitMQQueueHourlyUpdates));

            this._queueTask = Task.Factory.StartNew
                                  (() => _genericSubscriptionQueue.Subscribe(config, Configuration.RabbitMQQueueHourlyUpdates));
        }
        protected override void Load(ContainerBuilder builder)
        {
            builder.Register(context => new AutofacDependencyResolver(context)).As <IDependencyResolver>().SingleInstance();

            var rabbitMqSettings = new RabbitMQ.Client.ConnectionFactory
            {
                Uri = _settings.RabbitConnectionString
            };

            var rabbitMqEndpoint = _rabbitMqVirtualHost == null
                ? rabbitMqSettings.Endpoint.ToString()
                : $"{rabbitMqSettings.Endpoint}/{_rabbitMqVirtualHost}";


            builder.Register(c => new MessagingEngine(c.Resolve <ILogFactory>(),
                                                      new TransportResolver(new Dictionary <string, TransportInfo>
            {
                {
                    "RabbitMq",
                    new TransportInfo(rabbitMqEndpoint, rabbitMqSettings.UserName,
                                      rabbitMqSettings.Password, "None", "RabbitMq")
                }
            }),
                                                      new RabbitMqTransportFactory(c.Resolve <ILogFactory>())))
            .As <IMessagingEngine>()
            .SingleInstance()
            .AutoActivate();

            // Sagas
            builder.RegisterType <CashoutRegistrationSaga>();
            builder.RegisterType <HeartBeatCashoutSaga>();

            // Command handlers

            builder.RegisterType <RegisterCashoutRegistrationLastMomentCommandHandler>();
            builder.RegisterType <RegisterHeartbeatCashoutLastMomentCommandHandler>();
            builder.RegisterType <AcquireCashoutLockCommandHandler>();
            builder.RegisterType <ReleaseCashoutLockCommandHandler>();
            builder.RegisterType <StartHeartbeatCashoutCommandHandler>();
            builder.RegisterType <CheckCashoutPreconditionsCommandHandler>();
            builder.RegisterType <RetrieveAssetInfoCommandHandler>();


            builder.Register(CreateEngine)
            .As <ICqrsEngine>()
            .SingleInstance()
            .AutoActivate();
        }
示例#36
0
        public virtual ITunnel Create(string hostName, string virtualHost, string username, string password, IRabbitWatcher watcher)
        {
            var connectionFactory = new RabbitMQ.Client.ConnectionFactory
                                        {
                                            HostName = hostName,
                                            VirtualHost = virtualHost,
                                            UserName = username,
                                            Password = password
                                        };

            var durableConnection = new DurableConnection(new DefaultRetryPolicy(), watcher, connectionFactory);
            var errorHandler = new ConsumerErrorHandler(connectionFactory, Global.DefaultSerializer, Global.DefaultWatcher);
            var consumerManager = new ConsumerManager(watcher, errorHandler, Global.DefaultSerializer, Global.DefaultConsumerBatchSize);

            return new RabbitTunnel(consumerManager, 
                                    watcher, 
                                    Global.DefaultRouteFinder, 
                                    durableConnection,
                                    Global.DefaultSerializer,
                                    Global.DefaultCorrelationIdGenerator,
                                    Global.DefaultPersistentMode);

        }