Ich habe folgende ProcessQueueMessage Funktion, die Nachrichten von Service-Bus-Warteschlange sammelt:Azure Service-Bus Warteschlange Datenempfänger
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 ");
}
Also im Grunde, wenn Daten von Service-Bus-Warteschlange als JSON-Format kommen, analysiere ich das json, erhalten Werte und schickte jedes Signal an receive_emulate-Funktion. Das Problem ist, dass die Funktion ausgelöst wird, bevor die Datenverarbeitung in der Funktion receive_emulate endet. Ich möchte eine einzelne Nachricht verarbeiten und sie an receive_emulate-Funktionen senden. Wenn die Funktion zurückkehrt, nehmen Sie die zweite Nachricht in der Warteschlange. Leider konnte ich dies nicht erreichen, jede Idee würde sehr geschätzt werden. Ein weiterer, obwohl es geschrieben ist, dass Fifo in Service-Bus-Warteschlangen in azurblauen Dokumentation garantiert ist, stelle ich fest, dass meine Nachrichten nicht in Ordnung kommen. Gibt es eine Möglichkeit, sie in geordneter Form zu bekommen? Vielen Dank
Sortiert. Vielen Dank – emkay