使用 Dapr JS SDK 让 Nest.js 集成 Dapr

Dapr 是一个可移植的、事件驱动的运行时,它使任何开发人员能够轻松构建出弹性的、无状态和有状态的应用程序,并可运行在云平台或边缘计算中,它同时也支持多种编程语言和开发框架。

Dapr 中文手册:https://docs.dapr.io/zh-hans/

文件结构

Dapr JS SDK

  • https://github.com/dapr/js-sdk

创建包含我们的 NestJS 项目的文件结构:

src/ main.ts app.module.ts config/config.ts dapr/ dapr.module.ts dapr.service.ts

创建 Nest Dapr 模块

创建文件结构后,我们可以配置我们的模块并使其可用于 NestJS

src/dapr/dapr.module.ts

import { Module } from “@nestjs/common”;import { ConfigModule } from “@nestjs/config”;import { DaprService } from “./dapr.service”;@Module({ imports: [ ConfigModule ], controllers: [ ], providers: [ DaprService ], exports: [ DaprService ]})export class DaprModule {}

上面的代码将利用 Config 模块(我们稍后将使用它来将配置注入我们的服务)以及我们将创建的包含 Dapr JS SDK 方法的 Dapr 服务。

最后,在 app.module.ts 文件中注册这个模块:

import { Module } from ‘@nestjs/common’;import { ConfigModule } from ‘@nestjs/config’;import configuration from ‘../config/config’;import { DaprModule } from ‘./dapr/dapr.module’;@Module({ imports: [ ConfigModule.forRoot({ load: [configuration], }), DaprModule ], controllers: [], providers: [],})export class AppModule;

src/dapr/dapr.service.ts

现在我们已经注册了我们的模块,让我们创建帮助我们访问 Dapr JS SDK 的服务类:

import { Injectable, Logger } from ‘@nestjs/common’;import { ConfigService } from ‘@nestjs/config’;import { DaprClient } from ‘dapr-client’;@Injectable()export class DaprService { daprClient: DaprClient; private readonly logger = new Logger(DaprService.name); constructor( private readonly configService: ConfigService ) { const daprHost = this.configService.get(‘third_party.dapr.host’); const daprPort = this.configService.get(‘third_party.dapr.port’); this.logger.log(`Initializing DaprClient(“${daprHost}”, ${daprPort})`); this.daprClient = new DaprClient(daprHost, daprPort); }}

如您所见,我们在此处访问 third_party.dapr.host 和 third_party.dapr.port,它们从 config/config.ts 文件中提取信息。所以继续使用以下配置:

export default () => ({ third_party: { dapr: { host: process.env.DAPR_SIDECAR_HOST || ‘127.0.0.1’, port: process.env.DAPR_SIDECAR_PORT || ‘3500’, } },});

使用 Nest 模块

现在我们创建了我们的模块,我们可以将它导入到我们的任何 Nest 模块中(在 imports: [ DaprModule ]下载添加它)并开始使用它。

import { Controller, Get, HttpCode, Req, Logger } from ‘@nestjs/common’;import { ApiTags } from ‘@nestjs/swagger’;import { DaprService } from ‘../dapr/dapr.service’;@Controller(‘demo’)@ApiTags(‘demo’)export class DemoController { private readonly logger = new Logger(DemoController.name); constructor( private readonly daprService: DaprService, ) { } @Get(‘/’) @HttpCode(200) async demo(@Req() req): Promise { await this.daprService.daprClient.binding.send(`my-component`, “create”, { hello: “world” }); }

使用 Dapr 启动 Nest

为了开始这一切,我们现在可以使用 dapr run 命令,它会在其中创建包含 Dapr 的进程。

dapr run –app-id my-application –app-protocol http –app-port 50001 –dapr-http-port 3500 –components-path ./components npm run start

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
用户投稿
上一篇 2022年6月20日 09:10
下一篇 2022年6月20日 09:10

相关推荐

  • 短视频策划内容的3个要点(短视频策划内容怎么做)

    短视频在制作时,内容框架非常重要。如果直奔主题,然后结束,聚卓告诉你,这样的短视频已经过时了。现在的短视频需要框架的,但不是任何框架,它需要一种易于理解和消化的框架。而且,现在大多…

    2022年11月27日
  • 世界杯海外直播在哪看(中国女篮世界杯直播)

    最近一段时间最火爆的话题就是世界杯了,大家都想第一时间观看直播比赛,一些海外小伙伴在问世界杯海外直播在哪看?2022年世界杯海外直播免费观看平台有哪些?下面小编为大家带来世界杯海外…

    2022年11月25日
  • 科比19岁女儿遭自称与她生“科比式孩子”男子跟踪骚扰

    极目新闻记者王亮亮黄佳琪 据福克斯新闻网报道,当地时间11月21日,已故篮球巨星科比·布莱恩特的长女娜塔莉亚·布莱恩特21日向法院提交临时限制令,声称这位32岁的前科从十几岁起就骚…

    2022年11月24日
  • 免费清理c盘的软件(清理c盘空间不影响系统)

    电脑用久了慢如龟速,还卡顿,这最大的原因啊就是C盘空间不足造成的。 即使电脑配置再好,或者硬盘再快,如果长时间没有打扫C盘,打开文件或者稳定之类的,都卡得让人头大。 这时候呢不要去…

    2022年11月24日
  • 园属于什么结构(园的结构和部首)

    园 yuán:全包围结构,平稳端正中稍带左收右展。 外部“口” 体态端庄,稍抗肩,稍带左轻右重。左竖起笔稍抖,竖身勿重,稍左斜,垂露收笔;第二笔横折压着左竖起笔,横画稍抗肩,不要重…

    2022年11月24日
  • pdf虚拟打印机(添加pdf虚拟打印机)

    本文主要讲的是pdf虚拟打印机,以及和添加pdf虚拟打印机相关的知识,如果觉得本文对您有所帮助,不要忘了将本文分享给朋友。 pdf虚拟打印机具体是什么功能? 电脑虚拟打印机的功能有…

    2022年11月24日
  • 卡塔尔世界杯吉祥物中文叫什么名字(卡塔尔世界杯吉祥物动画)

    2022年卡塔尔世界杯的话题热度超级火爆的,其中本届世界杯中的吉祥物也受到了很多网友们的喜爱,大家也都在准备入手一只。那么,卡塔尔世界杯吉祥物中文叫什么名字?大家称之为“饺子皮”的…

    2022年11月23日
  • 大疆发布DJI O3 Air Unit图传解决方案 售价1499元

    大疆日前发布了最新的DJI O3 Air Unit 数字图传解决方案,该方案将DJI O3+ 图传与1/1.7 英寸影像传感器相机模块集于一身,具有高画质、低延时、远距离等特点。 …

    2022年11月23日
  • QQ发布6.8.8.6517测试版 新增GIF表情Tab

    腾讯 QQ 现已面向 macOS 用户发布了 6.8.8.6517 测试版更新,带来了新功能、体验优化和 Bug 修复。 新功能方面,测试版中,QQ 支持记忆消息输入区大小和群成员…

    2022年11月22日
  • ftp端口号(ftp端口号可以自定义吗)

    FTP端口号是21在FTP服务器中,我们往往会给不同的部门或者某个特定的用户设置一个帐户但是,这个账户有个特点,就是其只能够访问自己的主目录服务器通过这种方式来保障FTP服务上其他…

    2022年11月21日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息