Mqtt Nestjs-远程服务中未定义匹配的事件处理程序

Mqtt Nestjs-远程服务中未定义匹配的事件处理程序,mqtt,nestjs,Mqtt,Nestjs,我正在尝试使用微服务处理在线MQTT代理在主题test\u ack上发布的消息。但我得到了错误 远程服务中没有定义匹配的事件处理程序。 我的代码: main.ts 从'@nestjs/core'导入{NestFactory}; 从“./app.module”导入{AppModule}; 从'@nestjs/common/enums/Transport.enum'导入{Transport}; var url='1〕mqtt://test.mosquitto.org'; 异步函数引导(){ cons

我正在尝试使用微服务处理在线MQTT代理在主题
test\u ack
上发布的消息。但我得到了错误

远程服务中没有定义匹配的事件处理程序。

我的代码:

main.ts

从'@nestjs/core'导入{NestFactory};
从“./app.module”导入{AppModule};
从'@nestjs/common/enums/Transport.enum'导入{Transport};
var url='1〕mqtt://test.mosquitto.org';
异步函数引导(){
const app=wait NestFactory.createMicroservice(AppModule{
传输:transport.MQTT,
选项:{
url:url
}
});
等待app.listenAsync();
}
bootstrap();
app.controller.ts

从'@nestjs/common'导入{Controller};
从'@nestjs/microservices'导入{MessagePattern};
@控制器()
导出类AppController{
构造函数(){}
@MessagePattern('测试')
ackMessageTestData(数据:未知){
log(data.toString());
返回“已收到消息”;
}
}

由于我没有编辑权限,我将把它作为新答案发布。如上述答案所述。我们必须使用
@EventPattern('test\u ack')

已发布消息的格式应为
{data:'Your message'}
,并应在发布前进行序列化,如前所述


client.publish('test_ack',JSON.stringify({data:'test data'}))

您的错误消息给我留下了什么印象。Mine实际上给出了一个类似的错误消息:“远程服务中没有定义匹配的消息处理程序。”几乎完全相同,但它说的是“消息处理程序”,而不是“事件处理程序”。想知道这是否是同一件事。你能解决你的问题吗?是的,我实际上发送了错误的消息模式。我们在错误消息上的细微差别可能是因为我使用了Transport.TCP,我想它更像是一个“消息处理程序”,而不是一个“事件处理程序”。