Nestjs - в удаленной службе не определен соответствующий обработчик событий - PullRequest
0 голосов
/ 12 мая 2019

Я пытаюсь обработать сообщение, опубликованное по теме test_ack от онлайн-брокера MQTT с использованием микросервисов.Но я получаю сообщение об ошибке.

There is no matching event handler defined in the remote service.

Мой код:

main.ts

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { Transport } from '@nestjs/common/enums/transport.enum';
var url = 'mqtt://test.mosquitto.org';

async function bootstrap() {
    const app = await NestFactory.createMicroservice(AppModule, {
        transport: Transport.MQTT,
        options: {
            url: url
        }
    });
    await app.listenAsync();
}
bootstrap();

app.controller.ts

import { Controller } from '@nestjs/common';
import { MessagePattern } from '@nestjs/microservices';

@Controller()
export class AppController {
    constructor() {}

    @MessagePattern('test') 
    ackMessageTestData(data:unknown) {
        console.log(data.toString());
        return 'Message Received';
    }
}

Ответы [ 2 ]

0 голосов
/ 03 июня 2019

Поскольку у меня нет разрешения на редактирование, я опубликую его как новый ответ.Как уже упоминалось в ответе выше.Мы должны использовать @EventPattern('test_ack').

Опубликованное сообщение должно быть в формате {data: 'Your message'} и должно быть сериализовано перед публикацией, как указано здесь .

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

0 голосов
/ 12 мая 2019

Вы должны использовать

@EventPattern('test_ack')

вместо @MessagePattern для событий из внешних систем.

...