【深入浅出 Node + React 的微服务项目】16. 对 NATS Client 进行管理

发布 TicketCreate

// ticket-created-publisher.ts
import {
    Publisher, Subjects, TicketCreatedEvent } from '@heysirius-common/common';

export class TicketCreatedPublisher extends Publisher<TicketCreatedEvent> {
   
  subject: Subjects.TicketCreated = Subjects.TicketCreated;
}
// new.ts
await new TicketCreatedPublisher(client).publish({
   
  id: ticket.id,
  title: ticket.title,
  price: ticket.price,
  userId: ticket.userId,
});

⬆ back to top

将 NATS Client 独立出来

  • index 进行 nats client 初始化 给 ticketCreated route
  • ticketCreated 又会通过 app.ts 传递给 index
  • 造成 引用 circle
    在这里插入图片描述
  • 将 nats-client 独立出来

在这里插入图片描述

⬆ back to top

回顾 mongoose 的实现

在这里插入图片描述

在这里插入图片描述

// nats-wrapper.ts
import nats, {
    Stan } from 'node-nats-streaming';

class NatsWrapper {
   }

export const natsWrapper = new NatsWrapper();

⬆ back to top

nats client 独立的实现

// nats-wrapper.ts
import nats, {
    Stan } from 'node-nats-streaming';

class NatsWrapper {
   
  private _client?: Stan;

  connect(clusterId: string, clientId: string, url: string) {
   
    this._client = nats.connect(clusterId, clientId, {
    url });

    return new Promise((resolve, reject) => {
   
      this._client!.on('connect', () => {
   
        console.log('Connected to NATS');
        resolve();
      });
      this._client!.on('error', (err) => {
   
        reject(err);
      });
    });
  }
}

export const natsWrapper = new NatsWrapper();
  try {
   
    await natsWrapper.connect(
      'ticketing', 
      'dhghad', 
      'http://nats-srv:4222'
    );
  ...
  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值