MassTransit 集成配置

MassTransit 是一个免费且开源的 .NET 分布式应用程序框架,它使应用程序能够通过多种传输方式利用基于消息的通信进行彼此间的通信。

Elsa 提供了与 MassTransit 的集成,允许你将工作流执行请求分发到队列中以实现异步执行。此外,Elsa 还提供了一个 MassTransit 活动,让你能够在工作流内部向队列发送消息。


安装 MassTransit

要在 Elsa 中使用 MassTransit,首先需要安装以下 NuGet 包:

dotnet add package Elsa.MassTransit --prerelease

配置 MassTransit

要配置 MassTransit,请在 IModule 参数上使用 UseMassTransit 扩展方法:

services.AddElsa(elsa =>
{
    elsa.UseMassTransit();
});

MassTransit 需要安装一个传输提供程序。有关更多信息,请参阅 MassTransit 传输 。如果不指定传输提供程序,MassTransit 默认将使用 InMemory 传输提供程序。

Elsa 提供了两个可选但便捷的包,它们会安装所需的传输提供程序和 MassTransit:

  • Elsa.MassTransit.AzureServiceBus:安装 Azure Service Bus 传输提供程序和 MassTransit。
  • Elsa.MassTransit.RabbitMq:安装 RabbitMQ 传输提供程序和 MassTransit。

Azure Service Bus

要使用 Azure Service Bus 传输提供程序,请安装 Elsa.MassTransit.AzureServiceBus 包:

dotnet add package Elsa.MassTransit.AzureServiceBus --prerelease

接下来,配置 Azure Service Bus 传输提供程序:

services.AddElsa(elsa =>
{
    elsa.UseMassTransit(massTransit =>
    {
        massTransit.UseAzureServiceBus(
            "连接字符串",
            serviceBusFeature => serviceBusFeature.ConfigureServiceBus = bus =>
            {
                bus.PrefetchCount = 4;
                bus.LockDuration = TimeSpan.FromMinutes(5);
                bus.MaxConcurrentCalls = 32;
                bus.MaxDeliveryCount = 8;
                // 等等
            }
        );
    });
});

ConfigureServiceBus 委托允许你配置 ServiceBusBusFactoryConfigurator 实例。

RabbitMQ

要使用 RabbitMQ 传输提供程序,请安装 Elsa.MassTransit.RabbitMq 包:

dotnet add package Elsa.MassTransit.RabbitMq --prerelease

接下来,配置 RabbitMQ 传输提供程序:

services.AddElsa(elsa =>
{
    elsa.UseMassTransit(massTransit =>
    {
        massTransit.UseRabbitMq(
            "amqp://guest:guest@localhost:5672/elsa",
            rabbitMqFeature => rabbitMqFeature.ConfigureRabbitMq = bus =>
            {
                bus.PrefetchCount = 4;
                bus.Durable = true;
                bus.AutoDelete = false;
                bus.ConcurrentMessageLimit = 32;
                // 等等
            }
        );
    });
});

ConfigureRabbitMq 委托允许你配置 RabbitMqBusFactoryConfigurator 实例。

在本文档中