Il existe deux approches pour un travailleur de service pour traiter les messages d'un service Azure Bus Queue:Différences entre ReceiveAsync et OnMessageAsync
while (!ExitRequested)
{
try
{
var message = await _queueClient.ReceiveAsync(TimeSpan.FromSeconds(1));
if (message != null)
ProcessIt(message);
}
catch (Exception ex)
{
HandleIt(ex);
}
}
ou avec le EAP:
var onMessageOptions = new OnMessageOptions();
onMessageOptions.ExceptionReceived += (sender, args) => HandleIt(args.Exception);
_queueClient.OnMessageAsync(ProcessIt, onMessageOptions);
WaitFor(ExitRequested);
Qu'est-ce que sont les avantages et les inconvénients des deux approches? Lequel devrait être choisi dans quel scénario particulier?
Bon point sur le 'ReceiveBatch', mais je n'étais intéressé que par les performances/limitations du' Receive' vs 'OnMessage' pour les messages simples. Ils peuvent aussi gérer les finitions/verrouiller comme vous préférez. A moins qu'ils ne soient tous les deux exposés pour des raisons de compatibilité/cohérence, j'aimerais voir quand utiliser l'un ou l'autre (dans les scénarios à un seul msg) –
Peut-être devriez-vous mettre à jour votre question. –
Je ne suis pas trop préoccupé par les performances en particulier, je suis curieux de connaître les différences entre les deux modèles, y compris les performances, le cas échéant. –