/// <summary> /// Consumes the specified message from the bus. /// </summary> /// <param name="context">The context from the bus.</param> /// <returns>Task.</returns> public async Task Consume(ConsumeContext <IArchiveRecordUpdated> context) { using (LogContext.PushProperty(nameof(context.ConversationId), context.ConversationId)) { Log.Information("Received {CommandName} event with conversationId {ConversationId} from the bus", nameof(IArchiveRecordUpdated), context.ConversationId); // Nur wenn die VE erfolgreich aktualisiert worden ist, prüfen wir, ob es zur VE Einträge in der WaitList hat. // In der Regel sollte nur ein Wert zurück geliefert werden.- // Wenn ja, dann rufen wir erneut die DigitalisierungsAuftragErledigtEvent auf. Dieser löst dann den Download aus. if (context.Message.ActionSuccessful) { var items = await orderDataAccess.GetVeFromOrderExecutedWaitList(context.Message.ArchiveRecordId); foreach (var item in items) { var message = JsonConvert.DeserializeObject <DigitalisierungsAuftragErledigt>(item.SerializedMessage); var ep = await context.GetSendEndpoint(new Uri(bus.Address, BusConstants.DigitalisierungsAuftragErledigtEvent)); await ep.Send <IDigitalisierungsAuftragErledigt>(new { message.ArchiveRecordId, message.OrderItemId, message.OrderDate, message.OrderUserId, message.OrderUserRolePublicClient }); Log.Information("Sent {IDigitalisierungsAuftragErledigt} message on bus from ArchiveRecordUpdatedConsumer", nameof(IDigitalisierungsAuftragErledigt)); await orderDataAccess.MarkOrderAsProcessedInWaitList(item.OrderExecutedWaitListId); } } } }