Я обрабатываю nodejs запросы через RabbitMQ. Мой производитель получает запросы по маршруту nodejs и отправляет их потребителю, который затем создает документ в БД на основе данных, полученных из запроса. Вот мой маршрут
router.post("/create-user", async(req: Request, res: Response) => {
const msg = JSON.stringify(req.body);
const send = await Producer(msg);
});
Вот мой класс продюсера
import amqp from "amqplib/callback_api";
export async function Producer(message: string) {
amqp.connect("amqp://localhost", (error0, connection) => {
if (error0) {
throw error0;
}
connection.createChannel((error1, channel) => {
if (error1) {
throw error1;
}
let queue = "hello";
channel.assertQueue(queue, {
durable: false,
});
channel.sendToQueue(queue, Buffer.from(message));
console.log(" [x] Sent %s", message);
});
});
}
И мой потребитель
import amqp from "amqplib/callback_api";
import {
User
} from "../models/user";
export class ConsumerClass {
public async ConsumerConnection() {
amqp.connect("amqp://localhost", (error0, connection) => {
if (error0) {
throw error0;
} else {
this.ConsumerTask(connection);
}
});
}
public async ConsumerTask(connection: amqp.Connection) {
connection.createChannel((error1, channel) => {
if (error1) {
throw error1;
}
let queue = "hello";
channel.assertQueue(queue, {
durable: false,
});
channel.prefetch(1);
console.log(" [*] Waiting for messages in %s. To exit press CTRL+C", queue);
channel.consume(queue, async(msg) => {
console.log(" [x] Received %s", msg.content.toString());
const data = JSON.parse(msg.content.toString());
const user = new User({
name: data.name,
phone: data.phone,
company: data.company,
});
await user.save();
}, {
noAck: true,
});
});
}
}
Я хочу отправить документ Json пользователя, созданного из потребителя, на маршрут, чтобы клиент мог получить созданного пользователя в ответ. Как мне этого добиться и что я делаю не так?