RabbitMQ和NestJS有问题,我无法用nestjs-rabbitmq和NestJS发布消息

rlcwz9us  于 2022-11-08  发布在  RabbitMQ
关注(0)|答案(1)|浏览(325)

我有NestJS 8.0.0,我正在使用@golevelup/nestjs-rabbitmq”:“2.2.0。基本上我处理消息工作正常,但我不能发送任何消息,我只是得到一个“无法读取未定义的属性(读取'isConnected')”错误。
我采用的方法是:
https://www.npmjs.com/package/@golevelup/nestjs-rabbitmq#publising-messages-fire-and-forget
这是从一个控制器,我试图发送一个消息。我已经注入到AmqpConnection的每一个指示
第一个
我得到的错误是:

"TypeError: Cannot read properties of undefined (reading 'isConnected')\n    at AmqpConnection.publish (LOCAL_PATH\\node_modules\\@golevelup\\nestjs-rabbitmq\\src\\amqp\\connection.ts:423:33)\n    at MessageController.handleMessage 
"Cannot read properties of undefined (reading 'isConnected')"

我的假设是我做了一些愚蠢的设置。这是由应用程序正确加载和吐出所有正确的控制台消息的事实来支持的:成功连接到RabbitMQ代理程序初始化RabbitMQ处理程序成功连接RabbitMQ通道“AmqpConnection”等
任何帮助都不胜感激!

dtcbnfnu

dtcbnfnu1#

我修复了这个问题。它与我设置NestJS的方式有关。我没有在我创建的rabbit.module.ts中导出RabbitMQModule。现在我的模块看起来像这样:

@Global()
@Module({
  controllers: [],
  imports: [
    RabbitMQModule.forRoot(RabbitMQModule, {
      exchanges: [
        {
          name: 'exchange-name',
          type: 'topic',
        },
      ],
      uri: 'amqps://rabbitmqservice',
      connectionInitOptions: { wait: false },
      enableControllerDiscovery: true
    }),
    RabbitModule
  ],
  providers: [],
  exports: [RabbitMQModule]
})
export class RabbitModule {}

当按照说明将连接注入到我的控制器的构造函数中时,它可以正常工作:

constructor(
    private readonly amqpConnection: AmqpConnection
  ) {}

相关问题