public Task <IEnumerable <T> > GetFromSequenceNumber <T>(StreamEntityType entityType, ulong sequenceNumberStart = 0, ulong sequenceNumberEnd = ulong.MaxValue) where T : StreamEntityBase { var entries = _db.HashGetAll($"{_databaseName}-{entityType}"); if (entries != null) { var items = new List <T>(); foreach (var entry in entries) { try { var item = StreamEntityBase.FromProtoBufByteArray(entry.Value) as T; if (item.SequenceNumber >= sequenceNumberStart && item.SequenceNumber <= sequenceNumberEnd) { items.Add(item); } } catch (Exception ex) { } } return(Task.FromResult(items.AsEnumerable())); } else { return(Task.FromResult <IEnumerable <T> >(null)); } }
public override void Handle(StreamEntityType type, string content) { if (type == StreamEntityType.Status) { Console.WriteLine(content + "\n"); } else { Successor?.Handle(type, content); } }
public async Task <IEnumerable <T> > GetAll <T>(StreamEntityType entityType) where T : StreamEntityBase { var query = _client.CreateDocumentQuery <T>( UriFactory.CreateDocumentCollectionUri(_database, _collection), FeedOptions) .Where(s => s.EntityType == entityType) .AsDocumentQuery(); var items = new List <T>(); while (query.HasMoreResults) { items.AddRange(await query.ExecuteNextAsync <T>()); } return(items); }
public async Task <IEnumerable <T> > GetFromSequenceNumber <T>(StreamEntityType entityType, ulong sequenceNumberStart = 0, ulong sequenceNumberEnd = ulong.MaxValue) where T : StreamEntityBase { var query = _client.CreateDocumentQuery <T>( UriFactory.CreateDocumentCollectionUri(_database, _collection), FeedOptions) .Where(s => s.EntityType == entityType && s.SequenceNumber >= sequenceNumberStart && s.SequenceNumber <= sequenceNumberEnd) .AsDocumentQuery(); var items = new List <T>(); while (query.HasMoreResults) { items.AddRange(await query.ExecuteNextAsync <T>()); } return(items); }
public StreamEntityPersister(StreamEntityType entityType, IStreamPersister persister, CancellationToken cancellationToken, int numPartitions, bool direct = false, int holdOffBusy = 0, int holdOffIdle = 100) { _numPartitions = numPartitions; _partitions = new StreamEntityPersisterPartition[Math.Max(numPartitions, 1)]; for (int partitionKey = 0; partitionKey < _partitions.Count(); partitionKey++) { if (direct) { _partitions[partitionKey] = new StreamEntityPersisterPartitionDirect(persister, entityType, partitionKey, 100); } else { var persisterPartition = new StreamEntityPersisterPartitionAggregateQueueInMemory(persister, entityType, partitionKey, holdOffBusy, holdOffIdle); _partitions[partitionKey] = persisterPartition; persisterPartition.ProcessPendingItems(cancellationToken); } } }
public async Task <T> GetById <T>(StreamEntityType entityType, string id) where T : StreamEntityBase { try { var document = await _client.ReadDocumentAsync(UriFactory.CreateDocumentUri(_database, _collection, id)); return((T)(dynamic)document); } catch (DocumentClientException e) { if (e.StatusCode == System.Net.HttpStatusCode.NotFound) { return(null); } else { throw; } } }
public Task <T> GetById <T>(StreamEntityType entityType, string id) where T : StreamEntityBase { var data = _db.HashGet($"{_databaseName}-{entityType}", id); if (data.HasValue) { try { return(Task.FromResult(StreamEntityBase.FromProtoBufByteArray(data) as T)); } catch (Exception ex) { return(Task.FromResult <T>(null)); } } else { return(Task.FromResult <T>(null)); } }
public Task <IEnumerable <T> > GetAll <T>(StreamEntityType entityType) where T : StreamEntityBase { var entries = _db.HashGetAll($"{_databaseName}-{entityType}"); if (entries != null) { var items = new List <T>(); foreach (var entry in entries) { try { items.Add(StreamEntityBase.FromProtoBufByteArray(entry.Value) as T); } catch (Exception ex) { } } return(Task.FromResult(items.AsEnumerable())); } else { return(Task.FromResult <IEnumerable <T> >(null)); } }
public abstract void Handle(StreamEntityType type, string content);
public Task <IStreamPersisterBatch> CreateBatch(StreamEntityType type) { var sprocUri = UriFactory.CreateStoredProcedureUri(_database, _collection, BulkImportSprocName); return(Task.FromResult <IStreamPersisterBatch>(new CosmosDBStreamPersisterBatch(_client, sprocUri))); }
public async Task <IEnumerable <T> > GetFromSequenceNumber <T>(StreamEntityType entityType, ulong sequenceNumberStart = 0, ulong sequenceNumberEnd = ulong.MaxValue) where T : StreamEntityBase { return(null); }
public async Task <T> GetById <T>(StreamEntityType entityType, string id) where T : StreamEntityBase { return(null); }
public Task <IStreamPersisterBatch> CreateBatch(StreamEntityType type) { return(Task.FromResult <IStreamPersisterBatch>(new StreamPersisterBatch())); }
public StreamEntityPersisterPartitionAggregateQueueInMemory(IStreamPersister persister, StreamEntityType entityType, int partitionKey, int holdOffBusy = 0, int holdOffIdle = 100) : base(persister, entityType, partitionKey, holdOffBusy, holdOffIdle) { var reportingRunning = Interlocked.Exchange(ref _reportingRunning, 1); if (reportingRunning == 0) { ReportMetrics(); } }
public Task <IStreamPersisterBatch> CreateBatch(StreamEntityType type) { Interlocked.Increment(ref _numBatches); return(Task.FromResult <IStreamPersisterBatch>(new RedisStreamPersisterBatch(_db))); }
public async Task <IStreamPersisterBatch> CreateBatch(StreamEntityType type) { return(new SqlBatchStreamPersister(this)); }
public StreamEntityBase(string streamName, StreamEntityType entityType) { StreamName = streamName; EntityType = entityType; }
public async Task <IEnumerable <T> > GetAll <T>(StreamEntityType entityType) where T : StreamEntityBase { return(null); }
public StreamEntityPersisterPartition(IStreamPersister persister, StreamEntityType entityType, int partitionKey) { _persister = persister; _entityType = entityType; _partitionKey = partitionKey; }
public StreamEntityPersisterPartitionQueue(IStreamPersister persister, StreamEntityType entityType, int partitionKey, int holdOffBusy, int holdOffIdle) : base(persister, entityType, partitionKey) { _holdOffBusy = holdOffBusy; _holdOffIdle = holdOffIdle; }
public StreamEntityPersisterPartitionDirect(IStreamPersister persister, StreamEntityType entityType, int partitionKey, int numItemsPerBatch = 0) : base(persister, entityType, partitionKey) { _numItemsPerBatch = numItemsPerBatch; }