逻辑:处理是否存在连接

时间:2020-09-07 14:24:27

标签: node.js typescript rabbitmq

你好,我有一个关于带有amqplib的Rabbitmq的问题

我有重试连接的逻辑,但是我的问题是关于连接的。

在尝试建立连接之前,我会先进行验证(如果已经有一个开放的连接),但是我怀疑这样做的正确方法:

  public start = async () => {
    if (this.connection || !this.rabbitUrl) return;
    this.connection = await retry<Connection>(
      () => connect(this.rabbitUrl),
      10,
      1000
    ).then((connection) => {
      Logger.info('connect to RabbitMQ success');
      return this.listeners();
    });
  };

我的听众:

 private listeners = (): Promise<Connection> => {
    return new Promise((resolve, reject) => {
      if (!this.connection) {
        this.rabbitUrl ? this.start() : reject();
        reject();
      }
      resolve(
        this.connection.on('error', (err: Error) => {
          Logger.info(err.message);
          sleep(this.start, 10000);
        }) &&
          this.connection.on('close', (err: Error) => {
            if (err) {
              Logger.info('connection closed because err!');
              sleep(this.start, 10000);
            }
            Logger.info('connection to RabbitQM closed!');
          })
      );
    });
  };

如果没有连接,我只是使用return,我怀疑正确的连接是否会引发错误,通知已存在连接,还是仅返回记录器才是正确的连接? 就性能而言,这两种方法中哪一种是正确的,并且不会影响流程?

0 个答案:

没有答案