微服务grpc通讯 案例 nest 版

微服务grpc通讯 案例 nest 版

这个周末整理分类了自己写过的一些微服务模块,这里分享一个 使用nest搭建微服务的真实项目案例(已删减掉复杂的业务), 订单模块的微服务

数据库:mysql
语言:typescript
通讯协议:grpc

这里主要有6个文件
order-module.proto //grpc 通讯对外承诺的消息结构体,即协议文件
order.grpc.controller.ts //控制器
order.service.ts //服务层
order.entity.ts //实体
main.ts // 微服务启动入口
module.order.ts //nest 的模块内,集成 控制器,服务

order.grpc.controller.ts

proto对应的函数名,会自动映射到 控制器上

import {
    Controller, Inject } from '@nestjs/common';
import {
    GrpcMethod } from '@nestjs/microservices';

import {
    OrderService } from '../services/order.service';


import {
    OrderInput,SearchInput } from '../interfaces/order.interface';
@Controller()
export class OrderGrpcController {
   
    constructor(
        @Inject(OrderService) private readonly orderService: OrderService
    ) {
    }

    @GrpcMethod('OrderService')
    async Hello(payload: {
    name: string}) {
   
        const data = await this.orderService.hello(payload.name);
        return {
    value:data };
    }

    @GrpcMethod('OrderService')
    async add(payload: {
    orderInput: OrderInput }) {
   
        const data = await this.orderService.add(payload.orderInput);
        return {
    code: 1000, message: '创建成功' ,id: data.id};
    }

    @GrpcMethod('OrderService')
    async update(payload: {
    id:number, orderInput: OrderInput }) {
   
        await this.orderService.update(payload.id, payload.orderInput);
        return {
    code: 1000, message: '更新成功'};
    }

    @GrpcMethod('OrderService')
    async updateByOutTradeNo(payload: {
    outTradeNo:string, orderInput: OrderInput }) {
   
        await this.orderService.updateByOutTradeNo(payload.outTradeNo, payload.orderInput);
        return {
    code: 1000, message: '更新成功'};
    }

    @GrpcMethod('OrderService')
    async findById(payload: {
    id:number }) {
   
        let data = await this.orderService.findById(payload.id);
        return {
    code: 1000, message: '查找成功', orderInfo:data};
    }

    @GrpcMethod('OrderService')
    async findByUserId(payload: {
    userId:string}) {
   
        let datas = await this.orderService.findByUserId(payload.userId);
        return {
    code: 1000, message: '查找成功',orderInfos:datas };
    }
    @GrpcMethod('OrderService')
    async findByParam(payload: {
    searchInput:SearchInput}) {
   
        let datas = await 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值