Exemplo n.º 1
0
        /// <summary>
        ///     Registers a preparation job in the queue.
        /// </summary>
        /// <param name="archiveRecordId">The archive record identifier.</param>
        public async Task <int> RegisterJobInPreparationQueue(string archiveRecordId, string packageId, AufbereitungsArtEnum aufbereitungsArt,
                                                              AufbereitungsServices service, List <ElasticArchiveRecordPackage> primaryData, object workload)
        {
            var preperationTime = preparationCalculator.EstimatePreparationDuration(primaryData,
                                                                                    aufbereitungsZeitSettings.KonvertierungsgeschwindigkeitAudio,
                                                                                    aufbereitungsZeitSettings.KonvertierungsgeschwindigkeitVideo).TotalSeconds;

            var auftrag = new PrimaerdatenAuftrag
            {
                VeId                         = int.Parse(archiveRecordId),
                AufbereitungsArt             = aufbereitungsArt,
                PackageId                    = packageId,
                Service                      = service,
                Status                       = AufbereitungsStatusEnum.Registriert,
                GroesseInBytes               = primaryData.Sum(p => p.SizeInBytes),
                GeschaetzteAufbereitungszeit = Convert.ToInt32(preperationTime),
                Workload                     = JsonConvert.SerializeObject(workload),
                PackageMetadata              = JsonConvert.SerializeObject(primaryData),
                PriorisierungsKategorie      = GetPriorisierungskategorie(aufbereitungsArt, primaryData.Sum(p => p.SizeInBytes), workload)
            };

            var auftragId = await auftragAccess.CreateOrUpdateAuftrag(auftrag);

            Log.Information("{METHOD} for VE {VEID} with {STATUS}. AuftragId is {auftragId}",
                            nameof(RegisterJobInPreparationQueue),
                            archiveRecordId,
                            auftragId > 0 ? "SUCCEEDED" : "FAILED",
                            auftragId);

            return(auftragId);
        }
Exemplo n.º 2
0
        private async Task UpdatePrimaerdatenAuftragStatus(ITransformAsset message, AufbereitungsServices service, AufbereitungsStatusEnum newStatus,
                                                           string errorText = null)
        {
            if (message.PrimaerdatenAuftragId > 0)
            {
                Log.Information("Auftrag mit Id {PrimaerdatenAuftragId} wurde im {service}-Service auf Status {Status} gesetzt.",
                                message.PrimaerdatenAuftragId, service.ToString(), newStatus.ToString());

                var ep = await bus.GetSendEndpoint(new Uri(bus.Address, BusConstants.AssetManagerUpdatePrimaerdatenAuftragStatusMessageQueue));

                await ep.Send <IUpdatePrimaerdatenAuftragStatus>(new UpdatePrimaerdatenAuftragStatus
                {
                    PrimaerdatenAuftragId = message.PrimaerdatenAuftragId,
                    Service   = service,
                    Status    = newStatus,
                    ErrorText = errorText
                });
            }
        }
Exemplo n.º 3
0
 public PrimaerdatenAuftrag(int primaerdatenAuftragId, AufbereitungsArtEnum aufbereitungsArt, long?groesseInBytes, int?verarbeitungskanal,
                            int?priorisierungsKategorie, AufbereitungsStatusEnum status, AufbereitungsServices service, string packageId, string packageMetadata,
                            int veId, bool abgeschlossen, DateTime?abgeschlossenAm, int?geschaetzteAufbereitungszeit, string errorText, string workload,
                            DateTime createdOn, DateTime?modifiedOn, List <PrimaerdatenAuftragLog> primaerdatenAuftragLogs)
 {
     PrimaerdatenAuftragId   = primaerdatenAuftragId;
     AufbereitungsArt        = aufbereitungsArt;
     GroesseInBytes          = groesseInBytes;
     Verarbeitungskanal      = verarbeitungskanal;
     PriorisierungsKategorie = priorisierungsKategorie;
     Status          = status;
     Service         = service;
     PackageId       = packageId;
     PackageMetadata = packageMetadata;
     VeId            = veId;
     Abgeschlossen   = abgeschlossen;
     AbgeschlossenAm = abgeschlossenAm;
     GeschaetzteAufbereitungszeit = geschaetzteAufbereitungszeit;
     ErrorText  = errorText;
     Workload   = workload;
     CreatedOn  = createdOn;
     ModifiedOn = modifiedOn;
     PrimaerdatenAuftragLogs = primaerdatenAuftragLogs;
 }
        private async Task UpdatePrimaerdatenAuftragStatus(ConsumeContext <IUpdateArchiveRecord> context, AufbereitungsServices service,
                                                           AufbereitungsStatusEnum newStatus, string errorText = null)
        {
            if (context.Message.PrimaerdatenAuftragId > 0)
            {
                Log.Information("Auftrag mit Id {PrimaerdatenAuftragId} wurde im {service}-Service auf Status {Status} gesetzt.",
                                context.Message.PrimaerdatenAuftragId, service.ToString(), newStatus.ToString());

                var ep = await context.GetSendEndpoint(new Uri(context.SourceAddress,
                                                               BusConstants.AssetManagerUpdatePrimaerdatenAuftragStatusMessageQueue));

                await ep.Send <IUpdatePrimaerdatenAuftragStatus>(new UpdatePrimaerdatenAuftragStatus
                {
                    PrimaerdatenAuftragId = context.Message.PrimaerdatenAuftragId,
                    Service   = service,
                    Status    = newStatus,
                    ErrorText = errorText
                });
            }
        }