文档
工作示例

安装:

$ npm i --save @nestjs/microservices

main.ts

import { NestFactory } from '@nestjs/core';
import { Transport } from '@nestjs/microservices';import { AppModule } from './app.module';async function bootstrap() {const app = await NestFactory.create(AppModule);app.connectMicroservice({transport: Transport.TCP,});await app.startAllMicroservicesAsync();await app.listen(5000);
}
bootstrap();

app.controller.ts

import { Controller, Get, Query, UsePipes } from '@nestjs/common';
import {MessagePattern,Client,Transport,ClientProxy,
} from '@nestjs/microservices';
import { AppService } from './app.service';import { Observable, from } from 'rxjs';import { ValidationPipe } from './validation.pipe';@Controller()
export class AppController {@Client({ transport: Transport.TCP })client: ClientProxy;constructor(private readonly appService: AppService) {}@UsePipes(new ValidationPipe())@Get()getHello(@Query('data') data): Observable<number> {// const pattern = { cmd: 'sumObservable' };// const pattern = { cmd: 'sumAsync' };const pattern = { cmd: 'sum' };// 使用 send 调用微服务const r = this.client.send<number>(pattern, data);return r;}@MessagePattern({ cmd: 'sum' })sum(data: number[]): number {return data.reduce((acc, el) => acc + el);}// 返回promise异步响应@MessagePattern({ cmd: 'sumAsync' })sumAsync(data: number[]): Promise<number> {const result = data.reduce((acc, el) => acc + el) + 1;return Promise.resolve(result);}// 程序将响应3次@MessagePattern({ cmd: 'sumObservable' })sumObservable(data: number[]): Observable<number> {return from([1, 2, 3]);}
}

validation.pipe.ts

import {PipeTransform,Injectable,ArgumentMetadata,PayloadTooLargeException,BadRequestException,
} from '@nestjs/common';@Injectable()
export class ValidationPipe implements PipeTransform {transform(value: any, metadata: ArgumentMetadata) {if (metadata.type === 'query') {try {return JSON.parse(value);} catch (error) {throw new BadRequestException();}} else {throw new PayloadTooLargeException();}}
}

http://localhost:5000/?data=[1,2, 3] // 6

转载于:https://www.cnblogs.com/ajanuw/p/10342792.html

Nestjs 微服务相关推荐

  1. 最适合微服务的7大编程语言

    摘要:本文中,将介绍微服务项目中常用的7种语言,并通过几个因素对比一下,包括技术方面的考虑.社会(生态系统)方面的考虑以及经济方面的考虑. 微服务是一种架构风格,通过一组服务构成应用程序,这些服务具备 ...

  2. 微服务实践 | 焱融云前端微服务架构的设计要点

    什么是微服务 微服务是一种开发软件的架构和组织方法,其中软件由通过明确定义的 API 进行通信的小型独立服务组成,这些服务由各个小型独立团队负责,每个服务可被独立部署,服务之间是松耦合的,每个服务仅关 ...

  3. 微服务/API前端开发时代之 BFF 速学入门教程

    什么是BFF(Backends For Frontends) 顾名思义,它是前端的后端(服务器).专门为前端而调用API,或者生成 HTML 的服务器.看到这里你可能会想,"这与传统的Web ...

  4. 系统架构升级要不要上微服务?历“久”弥新微服务——你真的需要升级微服务架构吗

    在 <微服务架构设计模式> 一书中,作者总结了关于微服务的一些"重点",原文如下: 中国企业和开发者对微服务架构的热情让我印象深刻.但如同我给所有客户的忠告一样,我想对 ...

  5. 使用feign调用注解在eureka上的微服务,简单学会微服务

    使用feign调用注解在eureka上的微服务. 首先,确保所有服务(调用方与被调用方)都被注册在同一个eureka服务上. 1. 在调用方添加依赖(万事第一步,加依赖) <dependency ...

  6. Spring cloud 微服务docker容器化最佳实践

    Spring cloud 是当下最炙手可热的微服务套件,我们将介绍如何整合Docker容器达到高效快捷的构建发布 采用了dockerfile-maven-plugin插件发布镜像到远程docker主机 ...

  7. IDEA集成Docker插件实现一键自动打包部署微服务项目

    一. 前言 大家在自己玩微服务项目的时候,动辄十几个服务,每次修改逐一部署繁琐不说也会浪费越来越多时间,所以本篇整理通过一次性配置实现一键部署微服务,实现真正所谓的一劳永逸. 二. 配置服务器 1. ...

  8. etcd 笔记(09)— 基于 etcd 实现微服务的注册与发现

    1. 服务注册与发现基本概念 在单体应用向微服务架构演进的过程中,原本的巨石型应用会按照业务需求被拆分成多个微服务,每个服务提供特定的功能,也可能依赖于其他的微服务.此时,每个微服务实例都可以动态部署 ...

  9. 微服务架构必备的几点知识

    微服务架构 网关集群:数据的聚合.实现对接入客户端的身份认证.防报文重放与防数据篡改.功能调用的业务鉴权.响应数据的脱敏.流量与并发控制等 业务集群:一般情况下移动端访问和浏览器访问的网关需要隔离,防 ...

最新文章

  1. TCL免污式洗衣机联手育儿网打响免污保卫战
  2. 最大信息熵增益_机器学习笔记(三)——搞懂决策树必备的信息增益
  3. 科大星云诗社动态20210413
  4. Lichee (六) 优化配置的微内核
  5. 程序员修神之路--高并发下如何缩短响应时间
  6. 《大数据》2020年第4期目次摘要
  7. java接口继承编程题_JavaSE习题 继承接口和泛型
  8. 机器学习方向企业面试题(一)
  9. vs2008编写第一个Windows程序
  10. Harris 角点检测子
  11. Dynamic CRM 2013学习笔记(二十八)用JS动态设置字段的change事件、必填、禁用以及可见...
  12. Unity 风吹草的实现
  13. 【10】Docker的安装 --Mac
  14. 小项目一:使用fping统计网络中主机的网络连通情况
  15. 如何开通微信小程序在线客服系统?
  16. Zotero+zotfile+坚果云+PDF Expert超好用的多设备协同文献管理组合(保姆级别)
  17. VSCode取消注释斜体
  18. 第16周项目3--用函数指针调用函数(吃饭,睡觉,打豆豆)
  19. 1.2 Activity 的基本用法大全
  20. ubuntu18.04 terminal 无法打开

热门文章

  1. java操作protobuf
  2. MyCat - 使用篇(1)
  3. GDI+ 学习记录(11): 路径渐变画刷 - PathGradientBrush
  4. linux下挂载nas存储异常处理
  5. 3.25Day06元组、字典、集合常用及内置方法
  6. 通过命令行在Python中测试以太坊RPC客户端
  7. 微软可能是全球最大的开源贡献者,但开发者似乎并不买账​​​​​​​
  8. 用Flutter改造ZS项目小记一:界面显示一张图片
  9. Redis实现消息队列
  10. NodeJS基础2---2 Promise详解