RabbitMQ 后台作业管理
ABP Framework 提供了 Volo.Abp.BackgroundJobs.RabbitMQ 包,将使用 RabbitMQ 来执行后台作业.
使用 ABP CLI 将 包添加到你的项目:
- 如果之前没有安装过 ABP CLI,请先安装它.
- 跳转到待安装后台作业管理的项目目录中(包含
.csproj
文件的目录),打开终端管理器.
如果你想要手动安装,请先用 NuGet 包管理器安装 包到指定项目,之后使在你的 模块 上面添加 [DependsOn(typeof(AbpBackgroundJobsRabbitMqModule))]
配置依赖.
默认配置将会使用标准端口和主机名(localhost)连接到 RabbitMQ 服务,你不需要进行额外配置.
你可以使用 ASP.NET Core 的 对 RabbitMQ 进行详细配置,比如 appsettings.json
或者是 选项类.
通过 appsettings.json
文件配置
这种方式是配置 RabbitMQ 连接最简单的方式,你可以使用其他的配置源(例如环境变量).这些强大的功能都是由 ASP.NET Core 提供的支持.
你可以在配置文件使用所有 的属性,关于这些属性的具体含义,可以查看 RabbitMQ 的 官方文档.
目前我们允许定义多个连接,多连接的情况适用于不同的后台作业,具体配置信息可以参考下面的 RabbitMQ 后台作业配置说明.
示例: 定义两个 RabbitMQ 连接
如果需要连接到 RabbitMQ 集群,你可以指定多个 HostName.
示例: 连接到 RabbitMQ 集群
使用选项类
AbpRabbitMqOptions
类型用于配置 RabbitMQ 的连接字符串,你可以在 模块 的 ConfigureService
方法中进行配置.
示例: 配置 RabbitMQ 连接
后台作业队列的名称
默认情况下,每个后台作业都会使用一个单独的队列,结合标准前缀和作业名称来构造一个完整的队列名称.默认的前缀为 ,所以有一个作业的名称是 EmailSending
的话,在 RabbitMQ 的队列名称就是 AbpBackgroundJobs.EmailSending
.
在后台作业的参数类上,可以使用
BackgroundJobName
特性指定后台作业的名称.否则的话,后台作业的名称将会是后台作业类的全名(也包含命名空间).
后台作业使用的连接
默认情况下,后台作业都会使用 Default
作为默认连接.
自定义
AbpRabbitMqBackgroundJobOptions
可以自定义队列名和作业使用的 RabbitMQ 连接.
**示例: **
- 这个示例将默认的队列名前缀设置为
my_app_jobs.
,如果多个项目都使用的同一个 RabbitMQ 服务,设置不同的前缀可以避免执行其他项目的后台作业. - 这里还设置了
EmailSendingArgs
绑定的 RabbitMQ 连接.
JobQueueConfiguration
类的构造函数中,还有一些其他的可选参数.
queueName
: 指定后台作业对应的队列名称(全名).- : 后台作业对应的 RabbitMQ 连接名称,默认是
Default
. durable
: 可选参数,默认为true
.exclusive
: 可选参数,默认为false
.
如果你想要更多地了解 durable
,exclusive
, 的用法,请阅读 RabbitMQ 提供的文档.