gpt4 book ai didi

c# - ReceiveAsync 和 OnMessageAsync 之间的差异

转载 作者:行者123 更新时间:2023-11-30 17:36:02 25 4
gpt4 key购买 nike

服务工作线程有两种方法处理来自 Azure 服务总线队列的消息:

while (!ExitRequested)
{
try
{
var message = await _queueClient.ReceiveAsync(TimeSpan.FromSeconds(1));

if (message != null)
ProcessIt(message);
}
catch (Exception ex)
{
HandleIt(ex);
}
}

或使用EAP:

var onMessageOptions = new OnMessageOptions();

onMessageOptions.ExceptionReceived += (sender, args) => HandleIt(args.Exception);

_queueClient.OnMessageAsync(ProcessIt, onMessageOptions);

WaitFor(ExitRequested);

这两种方法各有什么优缺点?在哪种特定场景下应该选择哪一个?

最佳答案

ReceiveAsync 是 ASB .NET 客户端 API 的一部分。 OnMessage API 是 native ASB 客户端提供的一种简化并发消息泵创建的方法,允许您使用一些“开箱即用”的功能,这样您就不必手动处理这些功能。其中包括:

  1. 轻松将消息泵注册为回调
  2. 消息自动完成
  3. 自动续订超时以简化锁定 token 续订
  4. 处理并发泵/回调

当您需要灵 active 和严格控制事物时,这些优点也可以被视为缺点。例如,如果您需要控制消息完成的执行方式,您可以关闭自动完成功能并自行完成。但是,当您需要在回调中一次处理多条传入消息时,OnMessage API 不会让您这样做,因为它一次提供一条消息,您最好使用 [ReceiveBatchAsync][1] 。我有一个 post about OnMessage API您可以查看的好处。

Which one should be picked in which particular scenario?

这是您需要根据您的需求和架构自行回答的问题。如果您不需要对事物进行严格控制并且不需要一次处理一条消息(假设您可以同时执行多个消息处理),OnMessage API 是一个简单的开始路径,并且 ASB 客户端做得很好。如果您需要处理批处理并控制许多较低级别的方面,请使用 MessageSender/MessageReceiver方法。

关于c# - ReceiveAsync 和 OnMessageAsync 之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40307723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com