使用@golevelup/nestjs-rabbitmq
时,我尝试连接管理器不等待连接。根据自述文件,它可以处理重新连接并等待连接,而不会使应用程序崩溃。但是,当我按照说明使用connectionInitOptions
并将wait
设置为false
时,我得到了连接错误。当我不使用它时(默认行为设置wait
为true
),它连接到RabbitMQ服务器。下面是在NestJS模块中导入RabbitMQModule的示例。
这将工作并连接到RabbitMQ服务器
RabbitMQModule.forRoot(RabbitMQModule, {
exchanges: [{ type: 'topic', name: 'main' }],
uri: 'amqp://guest:guest@localhost:5672',
}
这不起作用,无法连接
RabbitMQModule.forRoot(RabbitMQModule, {
exchanges: [{ type: 'topic', name: 'main' }],
uri: 'amqp://guest:guest@localhost:5672',
connectionInitOptions: {
wait: false,
},
使用第二个选项时,我得到以下错误:
Error: AMQP connection is not available
at AmqpConnection.publish (/home/xxx/node_modules/@golevelup/nestjs-rabbitmq/src/amqp/connection.ts:424:13)
at BootstrapService.onApplicationBootstrap (/home/xxx/src/bootstrap/bootstrap.service.ts:20:25)
at MapIterator.iteratee (/home/xxx/node_modules/@nestjs/core/hooks/on-app-bootstrap.hook.js:22:43)
at MapIterator.next (/home/xxx/node_modules/iterare/src/map.ts:9:39)
at IteratorWithOperators.next (/home/xxx/node_modules/iterare/src/iterate.ts:19:28)
at Function.from (<anonymous>)
at IteratorWithOperators.toArray (/home/xxx/node_modules/iterare/src/iterate.ts:227:22)
at callOperator (/home/xxx/node_modules/@nestjs/core/hooks/on-app-bootstrap.hook.js:23:10)
at callModuleBootstrapHook (/home/xxx/node_modules/@nestjs/core/hooks/on-app-bootstrap.hook.js:43:23)
at NestApplication.callBootstrapHook (/home/xxx/node_modules/@nestjs/core/nest-application-context.js:199:55)
at NestApplication.init (/home/xxx/node_modules/@nestjs/core/nest-application.js:98:9)
at NestApplication.listen (/home/xxx/node_modules/@nestjs/core/nest-application.js:155:33)
at bootstrap (/home/xxx/src/main.ts:12:3)
最后一行(main. ts:12:3)是app.listen(3000)
语句。还有其他选项可以用connectionInitOptions
来设置(reject
和timeout
),我已经尝试了这些组合,但仍然没有连接。
RabbitMQ运行在Linux上的一个Docker容器中,但这应该没有问题。我在NestJS Discord上发布了同样的问题,但没有得到回复,所以希望SO上的人有一个想法。
知道是什么原因吗?
2条答案
按热度按时间xsuvu9jc1#
发现问题,我正在使用一个
onApplicationBootstrap
方法中的连接,然后连接显然还不存在。qncylg1j2#
您可以“onApplicationBootstrap”异步等待连接:或位于: