поэтому я хочу взять Json и разобрать его в Object, а затем внедрить RPC RabbitMQ Server, чтобы я мог отправить объект на сервер через RabbitMQ и там объект будет сохранен в локальном массиве иуниверсально уникальный идентификатор, который сообщит, где именно хранится объект, будет возвращен с этого сервера клиенту через RPC.
Официальный веб-сайт показывает некоторые реализации RPC в RabbitMQ, здесь вы можете найти их реализацию https://www.rabbitmq.com/tutorials/tutorial-six-javascript.html, в Учебнике они отправляют Число, и Сервер вычисляет Последовательность Фибоначчи и возвращает Результат Клиенту.вместо этого я хочу отправить объект, а не номер, и хочу получить универсально уникальный идентификатор (uuid) этого объекта, который я буду хранить в глобальном массиве в моей программе, я изменил код, чтобы он отправлял объект ивернуть UUID, но это не сработало.я буду признателен за любую помощь от вас, ребята
//this is my server_rpc.js code :
const amqp = require('amqplib/callback_api');
const uuid = require("uuid/v1");
amqp.connect('here is the url: example: localhost', (err, conn) => {
conn.createChannel( (err, ch) => {
let q = 'rpc_queue';
ch.assertQueue(q, {durable: false});
ch.prefetch(10);
console.log(' [x] Waiting RPC requests');
ch.consume(q, function reply(msg) {
console.log("corralation key is: ", msg.properties.correlationId);
let n = uuid();
console.log(" data received ",JSON.parse(JSON.stringify(msg.content.toString())));
console.log("corralation key is: ", msg.properties.correlationId);
ch.sendToQueue(msg.properties.replyTo, Buffer.from(n.toString()), {correlationId: msg.properties.correlationId});
ch.ack(msg);
});
});
});
// and this is my client_rpc.js code :
const amqp = require('amqplib/callback_api');
const uuid = require("uuid/v1");
const express = require("express");
let data = {
"name" : "hil01",
"region" : "weissach",
"ID" : "1",
"version" : "0.0.1"
}
amqp.connect('url: example localhost ', (err, conn) => {
conn.createChannel( (err, ch) => {
ch.assertQueue('', {exclusive: true}, (err, q) => {
var corr = generateUuid();
var newHil = JSON.stringify(data);
console.log(" [x] Requesting uuid for the registered HIL: ", newHil );
console.log("corralation key is: ", corr);
ch.consume(q.queue, function(msg) {
if(msg.properties.correlationId == corr) {
console.log(" [.] Got %s", msg.content.toString());
setTimeout(() => { conn.close(); process.exit(0) }, 100);
}
}, {noAck: true});
ch.sendToQueue('rpc_queue', Buffer.from(newHil, {correlationId: corr, replyTo: q.queue }));
});
});
});
//method to generate the uuid, later will be replaced with the real
uuid function
var generateUuid = () => Math.random().toString() +
Math.random().toString() + Math.random().toString() ;
при запуске server_rpc, [x] ожиданиезапросы должны быть напечатаны, затем в отдельном cmd я запускаю client_rpc.js, затем объект должен быть отправлен, а сервер выполнится и вернет мне uuid обратно клиенту.