【问题标题】:Multithreading inside NServiceBus handlerNServiceBus 处理程序中的多线程
【发布时间】:2023-03-30 13:54:01
【问题描述】:

是否存在在处理程序中运行异步操作是合理的情况? 例如:

public class H1 : IMessageHandler<MyMessage>
{
    public async void Handle(MyMessage message)
    {
        await SendTxt(message);
        await SendEmail(message);
    }
}

【问题讨论】:

  • 您的问题是否与“NServiceBus 是否支持异步处理程序?”相同?
  • 或多或少。据我了解, NServiceBus 管理自己的线程。我想知道的是我是否应该避免在处理程序中旋转更多线程(如果是,那么为什么)或者它是否完全合法。
  • 我不知道答案,但我想确保您了解一件事:异步、等待和异步 IO 都不会启动或阻塞线程。或许这是对你的误解。
  • @usr 没有显式创建其他线程,但这种更改可能会导致以前不存在的并行性。例如,如果事件处理程序在所有先前的处理程序完成之前不会触发,那么拥有同步处理程序将隐式同步代码,并使它们异步将隐式并行化它们。一些延续也可以在线程池线程中运行(同样,如果没有同步上下文),上下文可能不支持。

标签: c# .net queue nservicebus


【解决方案1】:

NServiceBus 不支持异步处理程序。

你想做什么?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多