项目

RabbitMQ分布式事件总线集成

本文档说明**如何配置RabbitMQ**作为分布式事件总线提供程序。有关如何使用分布式事件总线系统的详细信息,请参阅 分布式事件总线文档

安装步骤

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

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

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

配置说明

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

appsettings.json文件配置

这是配置RabbitMQ设置的最简单方法。由于支持AspNetCore的任何其他配置源(如环境变量),因此也非常强大

示例:使用默认配置连接到本地RabbitMQ服务器的最小配置

{
  "RabbitMQ": {
    "EventBus": {
      "ClientName": "MyClientName",
      "ExchangeName": "MyExchangeName"
    }
  }
}
  • ClientName是此应用程序的名称,在RabbitMQ中用作队列名称
  • ExchangeName交换机名称

请参阅RabbitMQ文档以更好地理解这些选项

连接配置

如果需要连接到非本地主机的服务器,需要配置连接属性

示例:指定主机名(作为IP地址)

{
  "RabbitMQ": {
    "Connections": {
      "Default": {
        "HostName": "123.123.123.123"
      }
    },
    "EventBus": {
      "ClientName": "MyClientName",
      "ExchangeName": "MyExchangeName"
    }
  }
}

允许定义多个连接。在这种情况下,您可以指定用于事件总线的连接

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

{
  "RabbitMQ": {
    "Connections": {
      "Default": {
        "HostName": "123.123.123.123"
      },
      "SecondConnection": {
        "HostName": "321.321.321.321"
      }
    },
    "EventBus": {
      "ClientName": "MyClientName",
      "ExchangeName": "MyExchangeName",
      "ConnectionName": "SecondConnection"
    }
  }
}

这允许您在应用程序中使用多个RabbitMQ服务器,但选择其中一个用于事件总线

您可以使用ConnectionFactory的任何属性作为连接属性

示例:指定连接端口

{
  "RabbitMQ": {
    "Connections": {
      "Default": {
        "HostName": "123.123.123.123",
        "Port": "5672"
      }
    }
  }
}

如果需要连接到RabbitMQ集群,可以使用;字符分隔主机名

示例:连接到RabbitMQ集群

{
  "RabbitMQ": {
    "Connections": {
      "Default": {
        "HostName": "123.123.123.123;234.234.234.234"
      }
    },
    "EventBus": {
      "ClientName": "MyClientName",
      "ExchangeName": "MyExchangeName"
    }
  }
}

选项类配置

AbpRabbitMqOptionsAbpRabbitMqEventBusOptions类可用于配置RabbitMQ的连接字符串和事件总线选项

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

示例:配置连接

Configure<AbpRabbitMqOptions>(options =>
{
    options.Connections.Default.UserName = "user";
    options.Connections.Default.Password = "pass";
    options.Connections.Default.HostName = "123.123.123.123";
    options.Connections.Default.Port = 5672;
});

示例:配置客户端名称、交换机名称和预取数量

Configure<AbpRabbitMqEventBusOptions>(options =>
{
    options.ClientName = "TestApp1";
    options.ExchangeName = "TestMessages";
    options.PrefetchCount = 1;
});

示例:配置队列和交换机的可选参数

Configure<AbpRabbitMqEventBusOptions>(options =>
{
    options.ExchangeArguments["x-delayed-type"] = "direct";
    options.QueueArguments["x-message-ttl"] = 60000;
});

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

在本文档中