【发布时间】:2019-03-28 13:53:15
【问题描述】:
我正在尝试根据the docs 使用 NestJS 设置 MQTT 微服务。
我已经使用 Docker 启动了一个有效的 Mosquitto Broker,并使用各种 MQTT 客户端验证了它的可操作性。现在,当我启动 NestJS 服务时,它似乎连接正确(mqqt.fx 显示新客户端),但我无法在我的控制器中接收任何消息。 这是我的引导,就像在文档中一样:
main.ts
async function bootstrap() {
const app = await NestFactory.createMicroservice(AppModule, {
transport: Transport.MQTT,
options: {
host: 'localhost',
port: 1883,
protocol: 'tcp'
}
});
app.listen(() => console.log('Microservice is listening'));
}
bootstrap();
app.controller.ts
@Controller()
export class AppController {
@MessagePattern('mytopic') // tried {cmd:'mytopic'} or {topic:'mytopic'}
root(msg: Buffer) {
console.log('received: ', msg)
}
}
我是错误地使用了消息模式装饰器,还是我对 NestJS MQTT 微服务应该做什么的概念有误?我认为它可能会订阅我传递给装饰器的主题。我唯一的其他信息来源是相应的unit tests
【问题讨论】:
-
这种奇怪的行为已在Nest 7.0 中得到修复。您可以直接订阅主题,无需任何后缀。
标签: node.js typescript microservices mqtt nestjs