コード例 #1
0
        public PostgreSqlTaskResultQueue(TaskQueueOptions options)
        {
            mOptions = options
                       ?? throw new ArgumentNullException(nameof(options));

            mUpdateSql = GetUpdateSql(options.Mapping);
        }
コード例 #2
0
        public PostgreSqlTaskResultQueueTests()
        {
            mResultQueueOptions = TestOptions
                                  .GetDefaultTaskResultQueueOptions(ConnectionString);

            mDataSource = new PostgreSqlTaskQueueDataSource(mResultQueueOptions.ConnectionOptions.ConnectionString,
                                                            TestOptions.DefaultMapping,
                                                            queueFaultErrorThrehsoldCount: 5);
        }
コード例 #3
0
        public PostgreSqlTaskQueueProducerTests()
        {
            mInfoOptions = TestOptions
                           .GetDefaultTaskQueueInfoOptions(ConnectionString);
            mProducerOptions = TestOptions
                               .GetDefaultTaskQueueProducerAndResultOptions(ConnectionString);
            mConsumerOptions = TestOptions
                               .GetDefaultTaskQueueConsumerOptions(ConnectionString);

            mDataSource = new PostgreSqlTaskQueueDataSource(mProducerOptions.ConnectionOptions.ConnectionString,
                                                            TestOptions.DefaultMapping,
                                                            queueFaultErrorThrehsoldCount: 5);
        }
コード例 #4
0
        public PostgreSqlTaskQueueProducer(TaskQueueOptions options, ITimestampProvider timestampProvider)
        {
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }
            if (timestampProvider == null)
            {
                throw new ArgumentNullException(nameof(timestampProvider));
            }

            mOptions           = options;
            mTimestampProvider = timestampProvider;

            mInsertSql            = GetInsertSql(mOptions.Mapping);
            mAddOrUpdateResultSql = GetInsertOrUpdateResultSql(mOptions.Mapping);
        }
コード例 #5
0
        public StandardTaskEngine(TaskEngineOptions engineOptions,
                                  TaskQueueOptions producerAndResultOptions,
                                  TaskQueueConsumerOptions consumerOptions,
                                  ITaskExecutorRegistry executorRegistry,
                                  IExecutionPerformanceMonitorWriter executionPerfMonWriter,
                                  ITimestampProvider timestampProvider)
        {
            if (engineOptions == null)
            {
                throw new ArgumentNullException(nameof(engineOptions));
            }

            if (consumerOptions == null)
            {
                throw new ArgumentNullException(nameof(consumerOptions));
            }

            if (producerAndResultOptions == null)
            {
                throw new ArgumentNullException(nameof(producerAndResultOptions));
            }

            mExecutorRegistry = executorRegistry
                                ?? throw new ArgumentNullException(nameof(executorRegistry));

            mExecutionPerfMonWriter = executionPerfMonWriter
                                      ?? throw new ArgumentNullException(nameof(executionPerfMonWriter));

            mExecutionPerfMon  = new StandardExecutionPerformanceMonitor();
            mTaskQueueConsumer = new PostgreSqlTaskQueueConsumer(consumerOptions,
                                                                 timestampProvider);
            mTaskQueueProducer = new PostgreSqlTaskQueueProducer(producerAndResultOptions,
                                                                 timestampProvider);

            mTaskResultQueue = new PostgreSqlTaskResultQueue(producerAndResultOptions);

            mTaskBuffer = new StandardTaskBuffer(engineOptions.WorkerCount);
            mTaskPoller = new StandardTaskPoller(engineOptions.TaskProcessingOptions,
                                                 mTaskQueueConsumer,
                                                 mTaskBuffer);

            mOptions = engineOptions;
        }
コード例 #6
0
        public WorkingTests()
        {
            mTimestampProvider = new UtcNowTimestampProvider();

            mTaskProcessingOptions = TestOptions
                                     .GetDefaultTaskProcessingOptions();

            mProducerAndResultOptions = TestOptions
                                        .GetDefaultTaskQueueProducerAndResultOptions(CommonConnectionString);

            mTaskQueueConsumerOptions = TestOptions
                                        .GetDefaultTaskQueueConsumerOptions(BaseConsumerConnectionString);

            mPostgreSqlExecutionPerformanceMonitorWriterOptions = TestOptions
                                                                  .GetDefaultPostgreSqlExecutionPerformanceMonitorWriterOptions(CommonConnectionString);

            mOperations = new PostgreSqlTaskQueueDbOperations(CommonConnectionString,
                                                              TestOptions.DefaultMapping);
        }
コード例 #7
0
        public ITaskEngine BuildTaskEngine()
        {
            ITaskExecutorRegistry executorRegistry = mTaskExecutorRegistrySetup
                                                     .BuildTaskExecutorRegistry();

            IExecutionPerformanceMonitorWriter executionPerfMonWriter = mPerformanceMonitorWriterSetup
                                                                        .BuildWriter();

            ITimestampProvider timestampProvider =
                new UtcNowTimestampProvider();

            TaskQueueConsumerOptions consumerOptions = mTaskQueueConsumerSetup
                                                       .BuildOptions();

            TaskQueueOptions producerOptions = mTaskQueueProducerSetup
                                               .BuildOptions();

            StakhanoviseLogManager.Provider = mLoggingProvider
                                              ?? new NoOpLoggingProvider();

            ITaskQueueProducer taskQueueProducer = new PostgreSqlTaskQueueProducer(producerOptions,
                                                                                   timestampProvider);

            ITaskQueueInfo taskQueueInfo = new PostgreSqlTaskQueueInfo(mTaskQueueInfoSetup.BuildOptions(),
                                                                       timestampProvider);

            if (mRegisterOwnDependencies)
            {
                executorRegistry.LoadDependencies(new Dictionary <Type, object>()
                {
                    { typeof(ITaskQueueProducer),
                      taskQueueProducer },
                    { typeof(ITaskQueueInfo),
                      taskQueueInfo }
                });
            }

            return(mTaskEngineSetup.BuildTaskEngine(consumerOptions,
                                                    producerOptions,
                                                    executorRegistry,
                                                    executionPerfMonWriter,
                                                    timestampProvider));
        }
コード例 #8
0
        public ITaskEngine BuildTaskEngine(TaskQueueConsumerOptions consumerOptions,
                                           TaskQueueOptions producerAndResultOptions,
                                           ITaskExecutorRegistry executorRegistry,
                                           IExecutionPerformanceMonitorWriter executionPerfMonWriter,
                                           ITimestampProvider timestampProvider)
        {
            if (consumerOptions == null)
            {
                throw new ArgumentNullException(nameof(consumerOptions));
            }

            if (producerAndResultOptions == null)
            {
                throw new ArgumentNullException(nameof(producerAndResultOptions));
            }

            if (executorRegistry == null)
            {
                throw new ArgumentNullException(nameof(executorRegistry));
            }

            if (executionPerfMonWriter == null)
            {
                throw new ArgumentNullException(nameof(executionPerfMonWriter));
            }

            StandardTaskEngine taskEngine = new StandardTaskEngine(BuildOptions(),
                                                                   producerAndResultOptions,
                                                                   consumerOptions,
                                                                   executorRegistry,
                                                                   executionPerfMonWriter,
                                                                   timestampProvider);

            taskEngine.ScanAssemblies(mExecutorAssemblies);
            return(taskEngine);
        }