У меня есть следующая функция ProcessQueueMessage, которая собирает сообщения из очереди служебной шины:
public static void ProcessQueueMessage([ServiceBusTrigger("dsique2")] BrokeredMessage message,
TextWriter logger)
{
logger.WriteLine($"Processing message: {message}");
Stream stream = message.GetBody<Stream>();
StreamReader reader = new StreamReader(stream);
string s = reader.ReadToEnd();
//Parse json
string output = s.Substring(s.IndexOf('{') , s.IndexOf('}') - s.IndexOf('{') + 1);
var json = JsonConvert.DeserializeObject<dynamic>(output);
var TS = Convert.ToDouble(json.ts);
var Speed = Convert.ToDouble(json.speed);
var Ped = Convert.ToDouble(json.ped);
var BrakePed = Convert.ToDouble(json.brakeped);
var lateralAcc1 = Convert.ToDouble(json.lateralacc1);
var steeringAngle = Convert.ToDouble(json.steeringangle);
//sends parsed values to function
Program.receive_emulate(0x415, Speed, TS, "offlineSpeed");
Program.receive_emulate(0x204, BrakePed , TS, "BrakePed ");
Program.receive_emulate(0x7D, lateralAcc1 , TS, "lateralAcc1 ");
Program.receive_emulate(0x92, steeringAngle , TS, "steeringAngle ");
}
По сути, всякий раз, когда данные поступают из очереди служебной шины в формате json, я анализирую json, получаю значения и отправляю каждый сигнал в функцию receive_emulate. Проблема в том, что функция запускается до завершения обработки данных в функции receive_emulate. Я хочу обработать отдельные сообщения и отправить их функциям receive_emulate. Когда функция вернется, возьмите второе сообщение в очереди. К сожалению, мне не удалось этого добиться, любые идеи будут очень признательны. Другой, хотя в документации Azure написано, что Fifo гарантированно находится в очередях служебной шины, я замечаю, что мои сообщения приходят не по порядку. Есть ли возможность получить их в заказанном виде? Большое спасибо