у меня есть триггер очереди лазурного оборудования, и когда я добавляю новое сообщение в очередь, его поднимается на триггер, но логика в самой функции не выполняется. < /p>
Сообщение Мы видим в консоли ... < /p>
Executing 'Functions.ProcessVoidData' (Reason='New queue message detected on 'void-queue'.', Id=a402eaf8-5885-4246-bf83-66eb026b65c2)
[2025-01-23T11:01:29.323Z] Trigger Details: MessageId: 38d917df-3217-4397-9149-eaeb05f05b7d, DequeueCount: 1, InsertedOn: 2025-01-23T11:01:28.000+00:00
[2025-01-23T11:01:29.361Z] Executed 'Functions.ProcessVoidData' (Succeeded, Id=a402eaf8-5885-4246-bf83-66eb026b65c2, Duration=44ms)
Я проверил эти файлы, и похоже, что с ними нет проблем. Строка подключения правильная, и с ней, похоже, нет проблем с настройкой. Пакеты также обновлены.
host.json
{
"version": "2.0",
"logging": {
"applicationInsights": {
"samplingSettings": {
"isEnabled": true,
"excludedTypes": "Request"
},
"enableLiveMetricsFilters": true
}
}
}
Нашел ту же проблему, но не смог решить свою проблему:
Изменить
Проблема GitHub
public async Task Run([QueueTrigger(QueueName, Connection = EnvironmentVariable.VoidStorageAccount)] VoidDataQueueDto voidQueueDto)
{
var voidRawData = voidQueueDto.VoidData;
try
{
_logger.LogInformation($"Handle Id: {voidRawData.HandleId}");
_logger.LogInformation($"Blob Id: {voidRawData.RawDataBlobId}");
var voidBlob = await GetRawVoidData(voidRawData.RawDataBlobId, _logger);
if (voidBlob == null)
{
_logger.LogCritical("Void payload is null");
return;
}
_logger.LogInformation("Void Raw Size: " + voidBlob.Length.ToString());
//Parse the payload
VoidPayload voidPayload = DecodeVoidData.ParseRawVoidPayload(voidBlob, _logger);
if(voidPayload == null)
{
_logger.LogError("Void payload is null");
return;
}
var healthSystemHandleResponse = await _pnDbApiService.GetHealthSystemByHandleId(voidRawData.HandleId);
if (healthSystemHandleResponse.Status != StatusCodes.Status200OK)
{
_logger.LogCritical(healthSystemHandleResponse.Error);
_logger.LogError("Unable to get health system associated with handle");
await MoveBlobToErrorContainer(voidRawData.RawDataBlobId, voidRawData.HandleId, VoidFailureType.NoStudy, _logger);
return;
}
var healthSystemHandle = healthSystemHandleResponse.Response;
var studyId = healthSystemHandle.StudyId;
_logger.LogInformation($"Health system : {healthSystemHandle.HealthSystemKey}");
voidPayload.HandleStats.StudyId = studyId;
voidPayload.HandleStats.HandleId = voidRawData.HandleId;
voidPayload.HandleStats.TimeStamp = voidRawData.VoidTimestamp;
voidPayload.HandleStats.DcdVersion = voidRawData.DcdVersion;
// Run the parsed data through processor
var rawData = new RawData(
voidPayload.Header.HardwareRevision,
voidPayload.Header.FirmwareVersion,
voidPayload.Header.IsMale,
voidPayload.Header.FloatAngleZero,
voidPayload.DataPoints,
new Acceleration(voidPayload.Header.AccelCalX, voidPayload.Header.AccelCalY, voidPayload.Header.AccelCalZ));
var processedVoidData = _voidDataProcessor.ProcessData(rawData);
// Save all data (raw and processed) to db
var processedVoidDataForDb = new VoidProcessedDataDto()
{
StudyId = studyId,
HandleId = voidRawData.HandleId,
IsValidVoid = processedVoidData.IsValidVoid,
VoidTime = voidQueueDto.IsTestCase ? voidRawData.VoidTimestamp : DateTime.Parse(voidPayload.Header.DateTimeStr, CultureInfo.InvariantCulture),
VoidedVolume = processedVoidData.VoidedVolume,
QMax = processedVoidData.QMax,
QAvg = processedVoidData.QAvg,
TimeToQMax = processedVoidData.TimeToQMax,
VoidDuration = processedVoidData.VoidDuration,
FlowDuration = processedVoidData.FlowDuration,
FlowRates = processedVoidData.FlowRates,
FloatAngles = voidPayload.DataPoints.Select(a => a.Angle.Degrees).ToArray(),
RawDataBlobId = voidRawData.RawDataBlobId,
RawVoidSize = voidBlob.Length,
HealthSystemKey = healthSystemHandle.HealthSystemKey,
}
var voidData = new CreateVoidDataDto()
{
HandleStatistics = voidPayload.HandleStats,
VoidProcessedData = processedVoidDataForDb
};
var data = JsonConvert.SerializeObject(voidData);
_logger.LogInformation(data);
int voidId = 0;
if (voidQueueDto.FailureType == VoidFailureType.None || voidQueueDto.FailureType == VoidFailureType.Saving || voidQueueDto.FailureType == VoidFailureType.NoStudy)
{
voidId = await _pnDbApiService.SendNewProcessedVoidData(voidData);
if (voidId == 0)
{
_logger.LogError($"Unable to save void data in pndb for handle : {voidRawData.HandleId}");
voidQueueDto.FailureType = VoidFailureType.Saving;
voidQueueDto.Iteration++;
string messageContent = JsonConvert.SerializeObject(voidQueueDto);
var plainTextBytes = Encoding.UTF8.GetBytes(messageContent);
var message = Convert.ToBase64String(plainTextBytes);
var inqueueTime = TimeSpan.FromSeconds(300);
await _queueClient.SendMessageAsync(message, inqueueTime, null);
return;
}
voidQueueDto.ExistingVoidId = voidId;
}
var isSuccess = await MoveBlobToCustomerStorage(voidRawData.RawDataBlobId, voidRawData.HandleId, studyId.ToString(), healthSystemHandle.HealthSystemKey, _logger);
var processVoidActionDto = new ProcessVoidActionDto()
{
VoidId = voidId,
StudyId = studyId,
};
}
catch (Exception e)
{
_logger.LogCritical(ConstantsMessages.EXCEPTION + ConstantsMessages.SingleSpace + $"{e.Message}");
_logger.LogCritical(e.StackTrace);
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... side-of-it
Триггер очереди Azure нажимает, но не выполняет логику внутри нее ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение