创建一个基于 Nest 框架的微服务应用,需要先安装一个包,在项目下面,执行 npm install 要安装的是 @nestjs/microservices,保存在项目的依赖里面。有了这个包就可以创建微服务了。
现在我要把项目里的这个 nest-1 做成一个微服务应用,先打开 apps,nest-1 里的 main.ts 文件。这里我们用 NestFactory 上的 create 方法创建了一个 Web 应用。
要创建一个微服务应用,可以用一下 NestFactory 上面的 createMicroservice 这个方法,把应用的 root 模块先交给这个方法,这里就是 AppModule,然后给它再提供一个对象参数。
在这个对象里面,先用 transport 设置一下微服务之间通信用的方法,Nest 框架默认带了几种方法,暂时我们先用一下 Tcp 这种方法,就是服务之间直接通过 Tcp 协议连接,然后进行通信。
在文件的顶部,我们要从 @nestjs/microservices 里面导入一些东西。
这里可以把 transport 属性的值设置成 Transport.TCP,这个 Transport 是个 enum 类型的值,用一下它里面的 TCP。实际上这个 Transport.TCP 真的值就是一个数字,这个数字代表了这个微服务使用的通信方法,或者叫传输层,英文是 transporters。
下面再添加一个 options 属性,它是选择的通信方法用的一些配置,选择使用不同的通信方法,这里可以使用的配置可能会有区别。
这个 Transport.TCP,支持设置它的 host ,就是主机,可以设置成 localhost,表示本地主机。下面再用 port 属性设置一下它的端口号,比如 5555,这样在其它服务那里可以通过这里指定的端口跟这个服务进行沟通。
下面用一下创建的 app 上面的 listen 方法,Microservice 类型的应用,这个 listen 方法需要一个函数参数,用一下 console.log 输出 nest-1 service has started.
保存一下文件,再到运行这个应用的终端观察一下,先停止一下运行的这个 nest-1,然后重新再运行一下这个应用。
你会发现这里会输出一个 nest-1 service has started,这样我们就成功的创建了一个微服务。