项目

分布式事件总线 Azure 集成

本文档说明如何配置 Azure Service Bus 作为分布式事件总线提供者。有关如何使用分布式事件总线系统,请参阅 分布式事件总线文档

安装

使用 ABP CLI 将 Volo.Abp.EventBus.Azure NuGet 包添加到您的项目:

  • 如果尚未安装,请先安装 ABP CLI
  • 在要添加 Volo.Abp.EventBus.Azure 包的 .csproj 文件所在目录打开命令行(终端)
  • 运行 abp add-package Volo.Abp.EventBus.Azure 命令

如需手动安装,请将 Volo.Abp.EventBus.Azure NuGet 包安装到您的项目,并在项目的 ABP 模块类中添加 [DependsOn(typeof(AbpEventBusAzureModule))]

配置

您可以使用标准配置系统进行配置,例如使用 appsettings.json 文件或使用选项

appsettings.json 文件配置

这是配置 Azure Service Bus 设置的最简单方法。由于支持 AspNetCore 的任何其他配置源(如环境变量),这种方式也非常灵活

示例:使用默认配置连接到 Azure Service Bus 命名空间的最小配置

{
  "Azure": {
    "ServiceBus": {
      "Connections": {
        "Default": {
          "ConnectionString": "Endpoint=sb://sb-my-app.servicebus.windows.net/;SharedAccessKeyName={{Policy Name}};SharedAccessKey={};EntityPath=marketing-consent"
        }
      }
    },
    "EventBus": {
      "ConnectionName": "Default",
      "SubscriberName": "MySubscriberName",
      "TopicName": "MyTopicName"
    }
  }
}
  • MySubscriberName 是此订阅的名称,在 Azure Service Bus 上用作订阅者
  • MyTopicName主题名称

请参阅 Azure Service Bus 文档以更好地理解这些选项

连接

如果需要连接到默认命名空间之外的其他 Azure Service Bus 命名空间,需要配置连接属性

示例:声明两个连接并将其中一个用于事件总线

{
  "Azure": {
    "ServiceBus": {
      "Connections": {
        "Default": {
          "ConnectionString": "Endpoint=sb://sb-my-app.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey={{SharedAccessKey}}"
        },
        "SecondConnection": {
          "ConnectionString": "Endpoint=sb://sb-my-app.servicebus.windows.net/;SharedAccessKeyName={{Policy Name}};SharedAccessKey={{SharedAccessKey}}"
        }
      }
    },
    "EventBus": {
      "ConnectionName": "SecondConnection",
      "SubscriberName": "MySubscriberName",
      "TopicName": "MyTopicName"
    }
  }
}

这允许您在应用程序中使用多个 Azure Service Bus 命名空间,但选择其中一个用于事件总线

您可以为连接使用任何 ServiceBusAdministrationClientOptionsServiceBusClientOptionsServiceBusProcessorOptions 属性

示例:指定管理、客户端和处理器选项

{
  "Azure": {
    "ServiceBus": {
      "Connections": {
        "Default": {
          "ConnectionString": "Endpoint=sb://sb-my-app.servicebus.windows.net/;SharedAccessKeyName={{Policy Name}};SharedAccessKey={};EntityPath=marketing-consent",
          "Admin": {
            "Retry": {
              "MaxRetries": 3
            }
          },
          "Client": {
            "RetryOptions": {
              "MaxRetries": 1
            }
          },
          "Processor": {
            "AutoCompleteMessages": true,
            "ReceiveMode": "ReceiveAndDelete"
          }
        }
      }
    },
    "EventBus": {
      "ConnectionName": "Default",
      "SubscriberName": "MySubscriberName",
      "TopicName": "MyTopicName"
    }
  }
}

选项类

AbpAzureServiceBusOptionsAbpAzureEventBusOptions 类可用于配置 Azure Service Bus 的连接字符串和事件总线选项

您可以在模块的 ConfigureServices 方法中配置这些选项

示例:配置连接

Configure<AbpAzureServiceBusOptions>(options =>
{
    options.Connections.Default.ConnectionString = "Endpoint=sb://sb-my-app.servicebus.windows.net/;SharedAccessKeyName={{Policy Name}};SharedAccessKey={}";
    options.Connections.Default.Admin.Retry.MaxRetries = 3;
    options.Connections.Default.Client.RetryOptions.MaxRetries = 1;
});

使用这些选项类可以与 appsettings.json 方式结合使用。在代码中配置选项属性会覆盖配置文件中的值

在本文档中