@aiondigital/messaging-queues

中文文档
1.1.5发布于 2024/04/30ISCTypeScriptCommonJS近 30 天下载 2194

基于不同消息经纪人的邮件队列

中文使用文档
文档目录7 节
  1. 安装
  2. 使用/实例
  3. 发送信件
  4. 信件处理
  5. 级级装饰
  6. 函数级装饰器
  7. 许可证

NestJS 通讯模块

这是一个 npm 软件包,用于管理 NestJS 应用程序中的邮件 。 它提供了一个在您的 NestJS 应用程序中配置消息选项和发送不同服务消息的方法.

安装

您可以使用 npm 或纱线安装此软件包 :

npm install @aiondigital/messaging-queues
# or
yarn add @aiondigital/messaging-queues

使用/实例

要在全球配置模块, 您可以使用 MessagingModule.forRootAsync 方法。 这样您就可以为您的应用程序设置消息选项 .

import { MessagingModule } from '@aiondigital/messaging-queues';
import { ConfigurationService } from './configuration.service';

@Module({
  imports: [CommonModule],
  imports: [
    MessagingModule.forRootAsync({
      useFactory: (_config: ConfigurationService) => {
        return _config.MESSAGING_OPTIONS;
      },
      inject: [ConfigurationService],
    }),
  ],
})
export class YourModule {}

这个 MESSAGING_OPTIONS 对象应当有以下字段:

  • 过期秒( 可选): 指定信件到期时间的编号 .
  • 死信交换:死信交换的名称.
  • 死字队列:死字队列的名称.
  • 经纪人Type:代表经纪人类型的值(如"redis"或"rabbitmq").
  • rabbitmq(可选):如果经纪Type被设定为"rabbitmq",则为RabbitMQ的额外配置.
  • redis (可选): Redis 的额外配置,如果经纪Type被设定为"redis".

发送信件

您可以使用 Message Service 发送来自您 NestJS 应用程序中不同服务的信息 。 首先,您需要注册队列 :

import { MessagingModule } from '@aiondigital/messaging-queues';

@Module({
  imports: [MessagingModule.registerQueue({
    name: ROUTING_KEYS.ADD_AUDIT_LOG,
    exchangeName: EXCHANGE.AUDIT,
  })],
})
export class YourModule {}

然后,在你的服务, 你可以使用 MessagingService 发送信件 :

import { Injectable } from '@nestjs/common';
import { MessagingService } from '@aiondigital/messaging-queues';

@Injectable()
export class YourService {
  constructor(private readonly messagingService: MessagingService) {}

  sendLogs(input) {
    this.messagingService.sendMessage(ROUTING_KEYS.ADD_AUDIT_LOG, input);
  }
}

就这样! 您已经为邮件模块设置了全局配置, 可以使用 MessagingService 从您的 NestJS 服务发送消息.

信件处理

级级装饰

在类层面上,您可以使用@Processor 装饰器来指定该类将负责处理的路由密钥. 这是你如何使用它:

import { Processor } from '@aiondigital/messaging-queues';

@Processor(ROUTING_KEYS.ADD_AUDIT_LOG)
export class YourMessageProcessor {
  // Your message processing methods go here
}

函数级装饰器

对于单个信件处理方法,您可以使用 @Process 指定信件处理细节的装饰. 这是你如何使用它:

import { Process } from '@aiondigital/messaging-queues';
import { CreateAuditLogInput } from './create-audit-log.dto';

@Process({
  name: '', // Give it a unique name
  exchangeName: EXCHANGE.AUDIT,
  routingKey: ROUTING_KEYS.ADD_AUDIT_LOG,
})
async auditlog(data: CreateAuditLogInput, done: AckCallback) {
  // Your message processing logic here
  try {
    const audit = await this.auditService.create(data, ['id']);
    return audit;
  } catch (error) {
    this.#logger.error(`Failed to add audit log: [${JSON.stringify(data)}]`);
    this.#logger.error(error);
    done(error);
  }
}

你应该把 @Process 使用特定路由键处理消息的方法的装饰器。 在同一类中,可以有多种使用不同路由键的方法.

记住替换占位符(ROUTING_KEYS.ADD_AUDIT_LOG, (中文(简体) ), EXCHANGE.AUDIT以申请中的实际数值表示.

现在 YourMessageProcessor 类将处理信件,其中包含在 @Processor 装饰者,以及 auditlog 方法将使用您指定的路由键处理信件 @Process 装饰师.

许可证

此软件包将在 MIT 许可证

版本与发布记录

@aiondigital/messaging-queues 共发布 14 个版本,首次发布于 2023/10/15;过去 12 个月发布了 0 个版本。

版本发布日期距今
1.1.5latest2024/04/302 年前
1.1.42024/04/212 年前
1.1.32024/02/122 年前
1.1.02023/10/173 年前
1.0.92023/10/173 年前
1.0.82023/10/173 年前

关于 @aiondigital/messaging-queues 的常见问题

@aiondigital/messaging-queues 是什么?

基于不同消息经纪人的邮件队列

如何安装 @aiondigital/messaging-queues?

在项目目录运行 npm install @aiondigital/messaging-queues,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@nestjs/common(^10.2.7)、@nestjs/core(^10.2.7)、amqplib(^0.10.3)、bull(^3.3 || ^4.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@aiondigital/messaging-queues 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@aiondigital/messaging-queues 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@aiondigital/messaging-queues 可以商用吗?

@aiondigital/messaging-queues 使用 ISC 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@aiondigital/messaging-queues 的下载量有多少?

根据 npm 官方下载统计,@aiondigital/messaging-queues 在 2026/10/05 – 2026/11/03 这 30 天内被下载 2,194 次,日均约 73 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@aiondigital/messaging-queues 还在维护吗?

最新版本 1.1.5 发布于 2024/04/30(2 年前);至今共发布 14 个版本,其中过去 12 个月发布了 0 个;首次发布于 2023/10/15。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。