Как описать конфиг RabbitMQ с НЕСКОЛЬКИМИ очередями?
Только начал изучать RabbitMQ и не могу понять, как взаимодействовать сразу с НЕСКОЛЬКИМИ очередями. Пока я сделал только ОДНУ очередь. И через эту очередь проходят сообщения о регистрации пользователя. Затем эти сообщения забираются сервисом уведомлений и на почту зарегистрированного пользователя отправляется письмо, о том что он подписался на рассылку уведомлений. При этом нигде в коде явно не указывается из какой очереди выбирать сообщения, т.к. очередь на данный момент всего ОДНА.
Я хочу добавить ВТОРУЮ очередь через переменную окружения и в конфиге Rabbit-а уже указать, что у меня ДВЕ очереди. Через вторую очередь я планирую отправлять уведомления о новых заданиях.
RABBIT_USER=admin
RABBIT_PASSWORD=test
RABBIT_HOST=localhost:5672
RABBIT_NOTIFY_SERVICE_QUEUE=taskforce.subscribers
RABBIT_TASKS_SERVICE_QUEUE=taskforce.newtasks - ВТОРАЯ ОЧЕРЕДЬ.
Что-то типа такого хочу сделать:
import { ConfigService, registerAs } from '@nestjs/config';
import { RmqOptions, Transport } from '@nestjs/microservices';
export const rabbitMqOptions = registerAs('rmq', () => ({
user: process.env.RABBIT_USER,
password: process.env.RABBIT_PASSWORD,
host: process.env.RABBIT_HOST,
queue_1: process.env.RABBIT_NOTIFY_SERVICE_QUEUE,
queue_2: process.env.RABBIT_TASKS_SERVICE_QUEUE,
}));
export function getRabbitMqConfig(configService: ConfigService): RmqOptions {
const user = configService.get<string>('rmq.user');
const password = configService.get<string>('rmq.password');
const host = configService.get<string>('rmq.host');
const queue_1 = configService.get<string>('rmq.queue_1');
const queue_2 = configService.get<string>('rmq.queue_2');
const url = `amqp://${user}:${password}@${host}`;
return {
transport: Transport.RMQ,
options: {
urls: [url],
queue: [queue_1, queue_2],
persistent: true,
noAck: true,
queueOptions: {
durable: true,
}
}
}
}
Но так не получается, т.к. в типе RmqOptions явно прописано, что параметр queue принимает строку в которой ОДНА очередь и всё. А мне нужно как-то передать массив с несколькими очередями. Что-то типа такого queue: [queue_1, queue_2],.
Как решается такая проблема?