public async Task Audit(AuditItem auditItem, CancellationToken cancellationToken)
        {
            if (!string.IsNullOrWhiteSpace(auditItem.SerializedCommand))
            {
                await AuditPayload(auditItem.SerializedCommand, auditItem.CommandId);
            }

            CommandAuditByDateDescItem byDateDesc = new CommandAuditByDateDescItem
            {
                AdditionalProperties = auditItem.AdditionalProperties,
                CommandType          = auditItem.CommandTypeFullName,
                CorrelationId        = auditItem.CorrelationId,
                Depth           = auditItem.Depth,
                CommandId       = auditItem.CommandId,
                DispatchedAtUtc = auditItem.DispatchedUtc,
                Type            = auditItem.Type
            };

            byDateDesc.PartitionKey = _storageStrategy.GetPartitionKey(byDateDesc);
            byDateDesc.RowKey       = _storageStrategy.GetRowKey(byDateDesc);
            CommandAuditByCorrelationIdItem byCorrelationId = new CommandAuditByCorrelationIdItem
            {
                AdditionalProperties = auditItem.AdditionalProperties,
                CommandType          = auditItem.CommandTypeFullName,
                CorrelationId        = auditItem.CorrelationId,
                Depth           = auditItem.Depth,
                CommandId       = auditItem.CommandId,
                DispatchedAtUtc = auditItem.DispatchedUtc,
                Type            = auditItem.Type
            };

            byCorrelationId.PartitionKey = _storageStrategy.GetPartitionKey(byCorrelationId);
            byCorrelationId.RowKey       = _storageStrategy.GetRowKey(byCorrelationId);

            Task <CloudTable> byDateTableTask          = _cloudStorageProvider.GetTable(_storageStrategy.GetTableName(byDateDesc));
            Task <CloudTable> byCorrelationIdTableTask = _cloudStorageProvider.GetTable(_storageStrategy.GetTableName(byCorrelationId));

            await Task.WhenAll(byDateTableTask, byCorrelationIdTableTask);


            await Task.WhenAll(
                byDateTableTask.Result.ExecuteAsync(TableOperation.Insert(byDateDesc), null, null, cancellationToken),
                byCorrelationIdTableTask.Result.ExecuteAsync(TableOperation.Insert(byCorrelationId), null, null, cancellationToken)
                );
        }
コード例 #2
0
        public string GetRowKey(CommandAuditByDateDescItem tableEntity)
        {
            string uniqueifier = string.IsNullOrWhiteSpace(tableEntity.CommandId) ? $"key{Guid.NewGuid()}" : $"cid{tableEntity.CommandId}";

            return($"{DateTime.MaxValue.Ticks - tableEntity.DispatchedAtUtc.Ticks:D19}-{uniqueifier}");
        }
コード例 #3
0
 public string GetPartitionKey(CommandAuditByDateDescItem tableEntity)
 {
     return($"{tableEntity.DispatchedAtUtc:HHmm}");
 }
コード例 #4
0
 public string GetTableName(CommandAuditByDateDescItem tableEntity)
 {
     return($"{_byDateNameNamePrefix}{tableEntity.DispatchedAtUtc.ToString("yyyyMMdd", CultureInfo.InvariantCulture)}{_byDateTableNamePostfix}");
 }
コード例 #5
0
 public string GetRowKey(CommandAuditByDateDescItem tableEntity)
 {
     return($"{DateTime.MaxValue.Ticks - tableEntity.DispatchedAtUtc.Ticks:D19}-{tableEntity.CommandId}");
 }
コード例 #6
0
 public string GetPartitionKey(CommandAuditByDateDescItem tableEntity)
 {
     return(tableEntity.DispatchedAtUtc.ToString("yyyyMMddHH", CultureInfo.InvariantCulture));
 }
コード例 #7
0
 public string GetTableName(CommandAuditByDateDescItem tableEntity)
 {
     return(_byDateDescTableName);
 }