микросервис Nest JS rabbitmq требует, чтобы приложение прослушивало все шаблоны входящих сообщений? - PullRequest
1 голос
/ 09 июля 2020

У меня два rabbitmq nest js микросервисов. Обе службы прослушивают одну и ту же очередь

Поток сообщений:

MyQueue(pattern: events) -> ServiceA -> MyQueue(pattern: logs) -> ServiceB

Поток сообщений работает нормально, но я получаю следующий журнал ошибок, когда ServiceA отправляет сообщение в ServiceB

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

Теперь вопрос в том, предполагается ли в Nest JS, что служба должна прослушивать все шаблоны входящих сообщений? Если нет, то как исправить эту ошибку?

Код:

/* 
* ServiceA
*/ 

import {EventPattern} from '@nestjs/microservices';

export class EventsController {
  private client: ClientProxy;

  constructor() {
    this.client = ClientProxyFactory.create(getRabbitMQClientOptions());
  }

  @EventPattern('events')
  handleEvents(data) {
    this.client.emit('logs', data);

    // process
  }
}

/* 
* ServiceB
*/ 

import {EventPattern} from '@nestjs/microservices';

export class LogsController {

  @EventPattern('logs')
  handleLogs(data) {
    // handle logs
  }
}

Возможное решение:

Использовать разные очереди. Но тогда мне нужно изменить много кода

Примечание. Вложенный JS код, который регистрирует ошибку, если не находит соответствующий обработчик. Ссылка на код Github

...