Exemplo n.º 1
0
        public async Task StartAsync()
        {
            _startTime.Start();
            long pagingTokenLong = await GetCurrentCursorFromDatabase("operation");

            string pagingToken = pagingTokenLong.ToString();


            _logger.LogDebug($"Starting page token is {pagingToken}");

            _operationsRequestBuilder = _server.Operations.Cursor(pagingToken).Limit(200);
            _eventSource = _operationsRequestBuilder.Stream((sender, response) =>
            {
                _operationsToHandleQueue.Enqueue(response);

                if (_sendQueueInfoMessageTime == null || DateTime.Now >= _sendQueueInfoMessageTime)
                {
                    _sendQueueInfoMessageTime = DateTime.Now.AddMinutes(1);

                    _logger.LogInformation($"Total operations parsed {_totalRequest}");
                    _logger.LogInformation($"Currently queued operations {_operationsToHandleQueue.Count}");
                    _logger.LogInformation($"Current paging token '{response.PagingToken}");
                    var rpm = _startTime.Elapsed.Minutes > 0 ? $"{_totalRequest / (int)_startTime.Elapsed.TotalMinutes} request handled per minute ({(int)_startTime.Elapsed.TotalMinutes}m)" : "";

                    if (!string.IsNullOrEmpty(rpm))
                    {
                        _logger.LogInformation($"{rpm}");
                    }
                }
            });

            _eventSource.Error += (sender, args) => { _logger.LogError(args.Exception.Message); };
            _eventSource.Connect().Wait();
        }
        public async Task StartAsync()
        {
            string cursor = await GetCurrentCursorFromDatabase("operations");

            _logger.Debug($"{nameof(cursor)}: {cursor}");

            await DeleteLastCursorId(cursor);

            _operationsRequestBuilder = _server.Operations.Cursor(cursor).Limit(10);

            _eventSource = _operationsRequestBuilder.Stream((sender, response) =>
            {
                var operationsRequestBuilder         = (OperationsRequestBuilder)sender;
                OperationRecordModel operationRecord = HandleOperationResponse(response);

                if (!string.IsNullOrEmpty(response.PagingToken))
                {
                    _eventSource.Headers.Remove("Last-Event-Id");
                    _eventSource.Headers.Add("Last-Event-Id", response.PagingToken);
                }
            });

            _eventSource.Error += (sender, args) =>
            {
                _logger.Error(args.Exception.Message, args.Exception);
            };

            _eventSource.Connect();
        }
Exemplo n.º 3
0
        public Command BuildOperationsCommand()
        {
            var command = new Command("operations");
            var builder = new OperationsRequestBuilder(PathParameters, RequestAdapter);

            command.AddCommand(builder.BuildCommand());
            command.AddCommand(builder.BuildCountCommand());
            command.AddCommand(builder.BuildCreateCommand());
            command.AddCommand(builder.BuildListCommand());
            return(command);
        }