示例#1
0
        private void RegisterPublishers(IRabbitMqService rabbitMqService)
        {
            var publishExchanges = new List <string>
            {
                _settings.RabbitMqQueues.OrderHistory.ExchangeName,
                _settings.RabbitMqQueues.OrderbookPrices.ExchangeName,
                _settings.RabbitMqQueues.AccountMarginEvents.ExchangeName,
                _settings.RabbitMqQueues.AccountStats.ExchangeName,
                _settings.RabbitMqQueues.Trades.ExchangeName,
                _settings.RabbitMqQueues.PositionHistory.ExchangeName,
                _settings.RabbitMqQueues.ExternalOrder.ExchangeName,
            };

            var bytesSerializer = new BytesStringSerializer();

            foreach (var exchangeName in publishExchanges)
            {
                var settings = new RabbitMqSettings
                {
                    ConnectionString = _settings.MtRabbitMqConnString,
                    ExchangeName     = exchangeName
                };
                _publishers[exchangeName] = rabbitMqService.GetProducer(settings, bytesSerializer);
            }

            _publishers[_settings.RfqChangedRabbitMqSettings.ExchangeName] =
                rabbitMqService.GetProducer(_settings.RfqChangedRabbitMqSettings, bytesSerializer);
        }
示例#2
0
        private void RegisterPublishers(ContainerBuilder builder, IConsole consoleWriter)
        {
            var publishers = new List <string>
            {
                _settings.RabbitMqQueues.AccountHistory.ExchangeName,
                _settings.RabbitMqQueues.OrderHistory.ExchangeName,
                _settings.RabbitMqQueues.OrderRejected.ExchangeName,
                _settings.RabbitMqQueues.OrderbookPrices.ExchangeName,
                _settings.RabbitMqQueues.OrderChanged.ExchangeName,
                _settings.RabbitMqQueues.AccountChanged.ExchangeName,
                _settings.RabbitMqQueues.AccountStopout.ExchangeName,
                _settings.RabbitMqQueues.UserUpdates.ExchangeName,
                _settings.RabbitMqQueues.AccountMarginEvents.ExchangeName,
                _settings.RabbitMqQueues.AccountStats.ExchangeName,
                _settings.RabbitMqQueues.Trades.ExchangeName,
                _settings.RabbitMqQueues.ExternalOrder.ExchangeName
            };

            var bytesSerializer = new BytesStringSerializer();

            foreach (var exchangeName in publishers)
            {
                var pub = new RabbitMqPublisher <string>(new RabbitMqSubscriptionSettings
                {
                    ConnectionString = _settings.MtRabbitMqConnString,
                    ExchangeName     = exchangeName
                })
                          .SetSerializer(bytesSerializer)
                          .SetPublishStrategy(new DefaultFanoutPublishStrategy(new RabbitMqSubscriptionSettings {
                    IsDurable = true
                }))
                          .DisableInMemoryQueuePersistence()
                          .SetLogger(_log)
                          .SetConsole(consoleWriter)
                          .Start();

                builder.RegisterInstance(pub)
                .Named <IMessageProducer <string> >(exchangeName)
                .As <IStopable>()
                .SingleInstance();
            }
        }
示例#3
0
        private void RegisterPublishers(ContainerBuilder builder, IConsole consoleWriter)
        {
            var publishers = new List <string>
            {
                _settings.RabbitMqQueues.OrderHistory.ExchangeName,
                _settings.RabbitMqQueues.OrderbookPrices.ExchangeName,
                _settings.RabbitMqQueues.AccountMarginEvents.ExchangeName,
                _settings.RabbitMqQueues.AccountStats.ExchangeName,
                _settings.RabbitMqQueues.Trades.ExchangeName,
                _settings.RabbitMqQueues.PositionHistory.ExchangeName,
                _settings.RabbitMqQueues.ExternalOrder.ExchangeName,
            };

            var bytesSerializer = new BytesStringSerializer();

            foreach (var exchangeName in publishers)
            {
                builder
                .Register(ctx =>
                {
                    var pub = new RabbitMqPublisher <string>(ctx.Resolve <ILoggerFactory>(), new RabbitMqSubscriptionSettings
                    {
                        ConnectionString = _settings.MtRabbitMqConnString,
                        ExchangeName     = exchangeName
                    })
                              .SetSerializer(bytesSerializer)
                              .SetPublishStrategy(new DefaultFanoutPublishStrategy(new RabbitMqSubscriptionSettings {
                        IsDurable = true
                    }))
                              .DisableInMemoryQueuePersistence()
                              .SetWriteHeadersFunc(ctx.Resolve <RabbitMqCorrelationManager>().BuildCorrelationHeadersIfExists);
                    pub.Start();
                    return(pub);
                })
                .Named <IMessageProducer <string> >(exchangeName)
                .As <IStartStop>()
                .SingleInstance();
            }
        }