- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
服务工作线程有两种方法处理来自 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 客户端提供的一种简化并发消息泵创建的方法,允许您使用一些“开箱即用”的功能,这样您就不必手动处理这些功能。其中包括:
当您需要灵 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/
服务工作线程有两种方法处理来自 Azure 服务总线队列的消息: while (!ExitRequested) { try { var message = await
我是一名优秀的程序员,十分优秀!