public CosmosDbFeedObserver( SqlClientExtension client, ICosmosDbSink cosmosDbSink) { this.client = client; this.destinationCollectionUri = UriFactory.CreateDocumentCollectionUri( client.DatabaseName, client.CollectionName); this.cosmosDbSink = cosmosDbSink; this.isBulkIngestion = ConfigHelper.IsBulkIngestion(); }
public async Task GenerateTimeSeriesData() { CosmosDbConfig config = CosmosDbConfig.GetCosmosDbConfig(); SqlClientExtension clientExtension = new SqlClientExtension( config, ConsistencyLevel.Session, connectionPolicy); await clientExtension.CreateCollectionIfNotExistsAsync(); while (true) { SensorReading reading = SensorReading.GetSampleReading(); await clientExtension.DocumentClient.UpsertDocumentAsync( UriFactory.CreateDocumentCollectionUri(clientExtension.DatabaseName, clientExtension.CollectionName), reading); System.Threading.Thread.Sleep(new TimeSpan(0, 0, 0, 1)); } }
private async Task UpdateSiteIdAgg( SqlClientExtension client, object doc, SensorReading sensorReading) { // take the first document SiteIdAggModel siteIdAggModel = JsonConvert.DeserializeObject <SiteIdAggModel>(doc.ToString()); if (!SiteIdAggModel.IsDuplicate(siteIdAggModel, sensorReading)) { SiteIdAggModel aggModel = SiteIdAggModel.GetIncrementedCountDoc(siteIdAggModel, sensorReading); for (int i = 0; i < retries; i++) { try { await client.UpdateItem((Document)doc, aggModel); break; } catch (DocumentClientException docEx) { if (docEx.StatusCode == HttpStatusCode.Conflict) { // Eat this execption, it can happen more workers are trying // to update the same document } } catch (Exception ex) { Logger.LogError(ex.Message, false); } } } }
public ChangeFeedObserverFactory( SqlClientExtension destClient, ICosmosDbSink cosmosDbSink, ILoggerFactory loggerFactory) { if (destClient == null) { throw new ArgumentNullException(nameof(destClient)); } if (cosmosDbSink == null) { throw new ArgumentNullException(nameof(cosmosDbSink)); } if (loggerFactory == null) { throw new ArgumentNullException(nameof(loggerFactory)); } this.destinationType = DestinationType.CosmosDB; this.destClient = destClient; this.cosmosDbSink = cosmosDbSink; this.loggerFactory = loggerFactory; this.logger = loggerFactory.CreateLogger <ChangeFeedObserverFactory>(); }
private async Task <List <object> > GetSiteIdAggDocs(SqlClientExtension client, SensorReading sensorReading) { return(await client.queryDocs("select * from c where c.id='" + sensorReading.SiteId + "'", sensorReading.SensorId)); }
public void IngestDocsInBulk(SqlClientExtension client, IChangeFeedObserverContext context, IReadOnlyList <Document> docs, CancellationToken cancellationToken, Uri destinationCollectionUri) { throw new NotImplementedException(); }