コード例 #1
0
ファイル: SqlMessageBus.cs プロジェクト: yashhotline/SignalR
        internal SqlMessageBus(string connectionString, int tableCount, SqlInstaller sqlInstaller, SqlSender sqlSender, SqlReceiver sqlReceiver, IDependencyResolver dependencyResolver)
            : base(dependencyResolver)
        {
            _installer = sqlInstaller ?? new SqlInstaller(connectionString, _tableName, tableCount);
            _installer.EnsureInstalled();

            _sender   = sqlSender ?? new SqlSender(connectionString, _tableName);
            _receiver = sqlReceiver ?? new SqlReceiver(connectionString, _tableName, OnReceived);
        }
コード例 #2
0
ファイル: SqlMessageBus.cs プロジェクト: Kazzje/SignalR
        internal SqlMessageBus(string connectionString, int tableCount, SqlInstaller sqlInstaller, SqlSender sqlSender, SqlReceiver sqlReceiver, IDependencyResolver dependencyResolver)
            : base(dependencyResolver)
        {
            _installer = sqlInstaller ?? new SqlInstaller(connectionString, _tableName, tableCount);
            _installer.EnsureInstalled();

            _sender = sqlSender ?? new SqlSender(connectionString, _tableName);
            _receiver = sqlReceiver ?? new SqlReceiver(connectionString, _tableName, OnReceived);
        }
コード例 #3
0
        private void Initialize(object state)
        {
            // NOTE: Called from a ThreadPool thread
            _logger.LogInformation(String.Format("SQL message bus initializing, TableCount={0}", _configuration.TableCount));

            while (true)
            {
                try
                {
                    var installer = new SqlInstaller(_connectionString, _tableNamePrefix, _configuration.TableCount, _logger);
                    installer.Install();
                    break;
                }
                catch (Exception ex)
                {
                    // Exception while installing
                    for (var i = 0; i < _configuration.TableCount; i++)
                    {
                        OnError(i, ex);
                    }

                    _logger.LogError("Error trying to install SQL server objects, trying again in 2 seconds: {0}", ex);

                    // Try again in a little bit
                    Thread.Sleep(2000);
                }
            }

            for (var i = 0; i < _configuration.TableCount; i++)
            {
                var streamIndex = i;
                var tableName   = String.Format(CultureInfo.InvariantCulture, "{0}_{1}", _tableNamePrefix, streamIndex);

                var stream = new SqlStream(streamIndex, _connectionString, tableName, _logger, _dbProviderFactory);
                stream.Queried  += () => Open(streamIndex);
                stream.Faulted  += (ex) => OnError(streamIndex, ex);
                stream.Received += (id, messages) => OnReceived(streamIndex, id, messages);

                _streams.Add(stream);

                StartReceiving(streamIndex);
            }
        }
コード例 #4
0
        private void Initialize(object state)
        {
            // NOTE: Called from a ThreadPool thread
            while (true)
            {
                try
                {
                    var installer = new SqlInstaller(_connectionString, _tableNamePrefix, _configuration.TableCount, _trace);
                    installer.Install();
                    break;
                }
                catch (Exception ex)
                {
                    // Exception while installing
                    for (var i = 0; i < _configuration.TableCount; i++)
                    {
                        OnError(i, ex);
                    }

                    // Try again in a little bit
                    Thread.Sleep(2000);
                }
            }

            for (var i = 0; i < _configuration.TableCount; i++)
            {
                var streamIndex = i;

                var stream = new SqlStream(streamIndex, _connectionString,
                                           tableName: String.Format(CultureInfo.InvariantCulture, "{0}_{1}", _tableNamePrefix, streamIndex),
                                           open: () => Open(streamIndex),
                                           onReceived: OnReceived,
                                           onError: ex => OnError(streamIndex, ex),
                                           traceSource: _trace,
                                           dbProviderFactory: _dbProviderFactory);

                _streams.Add(stream);

                StartStream(streamIndex);
            }
        }
コード例 #5
0
        private void Initialize(object state)
        {
            // NOTE: Called from a ThreadPool thread
            _trace.TraceInformation("SQL message bus initializing, TableCount={0}", _configuration.TableCount);

            while (true)
            {
                try
                {
                    var installer = new SqlInstaller(_connectionString, _tableNamePrefix, _configuration.TableCount, _trace);
                    installer.Install();
                    break;
                }
                catch (Exception ex)
                {
                    // Exception while installing
                    for (var i = 0; i < _configuration.TableCount; i++)
                    {
                        OnError(i, ex);
                    }

                    _trace.TraceError("Error trying to install SQL server objects, trying again in 2 seconds: {0}", ex);

                    // Try again in a little bit
                    Thread.Sleep(2000);
                }
            }

            for (var i = 0; i < _configuration.TableCount; i++)
            {
                var streamIndex = i;
                var tableName = String.Format(CultureInfo.InvariantCulture, "{0}_{1}", _tableNamePrefix, streamIndex);

                var stream = new SqlStream(streamIndex, _connectionString, tableName, _trace, _dbProviderFactory);
                stream.Queried += () => Open(streamIndex);
                stream.Faulted += (ex) => OnError(streamIndex, ex);
                stream.Received += (id, messages) => OnReceived(streamIndex, id, messages);

                _streams.Add(stream);

                StartReceiving(streamIndex);
            }
        }
コード例 #6
0
        private void Initialize(object state)
        {
            // NOTE: Called from a ThreadPool thread
            while (true)
            {
                try
                {
                    var installer = new SqlInstaller(_connectionString, _tableNamePrefix, _configuration.TableCount, _trace);
                    installer.Install();
                    break;
                }
                catch (Exception ex)
                {
                    // Exception while installing
                    for (var i = 0; i < _configuration.TableCount; i++)
                    {
                        OnError(i, ex);
                    }

                    // Try again in a little bit
                    Thread.Sleep(2000);
                }
            }

            for (var i = 0; i < _configuration.TableCount; i++)
            {
                var streamIndex = i;

                var stream = new SqlStream(streamIndex, _connectionString,
                    tableName: String.Format(CultureInfo.InvariantCulture, "{0}_{1}", _tableNamePrefix, streamIndex),
                    open: () => Open(streamIndex),
                    onReceived: OnReceived,
                    onError: ex => OnError(streamIndex, ex),
                    traceSource: _trace,
                    dbProviderFactory: _dbProviderFactory);

                _streams.Add(stream);

                StartStream(streamIndex);
            }
        }