版本
语言

分布式事件总线RabbitMQ集成

本文解释了 如何配置RabbitMQ 做为分布式总线提供程序. 参阅分布式事件总线文档了解如何使用分布式事件总线系统.

安装

使用ABP CLI添加Volo.Abp.EventBus.RabbitMQNuGet包到你的项目:

  • 安装ABP CLI,如果你还没有安装.
  • 在你想要安装 Volo.Abp.EventBus.RabbitMQ 包的 .csproj 文件目录打开命令行(终端).
  • 运行 abp add-package Volo.Abp.EventBus.RabbitMQ 命令.

如果你想要手动安装,安装Volo.Abp.EventBus.RabbitMQ NuGet 包到你的项目然后添加 [DependsOn(typeof(AbpEventBusRabbitMqModule))] 到你的项目模块类.

配置

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

appsettings.json 文件配置

这是配置RabbitMQ设置最简单的方法. 它也非常强大,因为你可以使用由AspNet Core支持的任何其他配置源(如环境变量).

示例:最小化配置与默认配置连接到本地的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服务器,但将其中一个做为事件总线.

你可以使用任何ConnectionFactry属性作为连接属性.

示例: 指定连接端口

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

如果需要连接到 RabbitMQ 集群,你可以指定多个 HostName。

示例: 连接到 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 组合在一起. 在代码中配置选项属性会覆盖配置文件中的值.

本页对您有帮助吗?
请进行选择。
感谢您的宝贵意见!

请注意,虽然我们无法回复反馈意见,但我们的团队会根据您的意见改进体验。

在本文档中
Mastering ABP Framework Book
掌握 ABP 框架

本书将帮助你全面了解框架和现代Web应用程序开发技术。