bondarenko_max_lab_4

This commit is contained in:
maxnes3 2024-12-10 21:33:59 +04:00
parent 7f5ad611b5
commit e760640200
6 changed files with 205 additions and 0 deletions

1
bondarenko_max_lab_4/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
node_modules

View File

@ -0,0 +1,40 @@
const amqp = require('amqplib/callback_api');
const EXCHANGE_NAME = 'logs';
const QUEUE_NAME = 'queue1';
amqp.connect('amqp://localhost', (err, connection) => {
if (err) {
throw err;
}
connection.createChannel((err, channel) => {
if (err) {
throw err;
}
channel.assertExchange(EXCHANGE_NAME, 'fanout', {
durable: false,
});
channel.assertQueue(QUEUE_NAME, {
exclusive: false,
}, (err, q) => {
if (err) {
throw err;
}
channel.bindQueue(q.queue, EXCHANGE_NAME, '');
channel.consume(q.queue, (msg) => {
console.log(` [x] Received '${msg.content.toString()}'`);
setTimeout(() => {
console.log(` [x] Done processing '${msg.content.toString()}'`);
}, 2000);
}, {
noAck: true,
});
});
});
});

View File

@ -0,0 +1,36 @@
const amqp = require('amqplib/callback_api');
const EXCHANGE_NAME = 'logs';
const QUEUE_NAME = 'queue2';
amqp.connect('amqp://localhost', (err, connection) => {
if (err) {
throw err;
}
connection.createChannel((err, channel) => {
if (err) {
throw err;
}
channel.assertExchange(EXCHANGE_NAME, 'fanout', {
durable: false,
});
channel.assertQueue(QUEUE_NAME, {
exclusive: false,
}, (err, q) => {
if (err) {
throw err;
}
channel.bindQueue(q.queue, EXCHANGE_NAME, '');
channel.consume(q.queue, (msg) => {
console.log(` [x] Received '${msg.content.toString()}'`);
}, {
noAck: true,
});
});
});
});

97
bondarenko_max_lab_4/package-lock.json generated Normal file
View File

@ -0,0 +1,97 @@
{
"name": "bondarenko_max_lab_4",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"dependencies": {
"amqplib": "^0.10.5"
}
},
"node_modules/@acuminous/bitsyntax": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/@acuminous/bitsyntax/-/bitsyntax-0.1.2.tgz",
"integrity": "sha512-29lUK80d1muEQqiUsSo+3A0yP6CdspgC95EnKBMi22Xlwt79i/En4Vr67+cXhU+cZjbti3TgGGC5wy1stIywVQ==",
"license": "MIT",
"dependencies": {
"buffer-more-ints": "~1.0.0",
"debug": "^4.3.4",
"safe-buffer": "~5.1.2"
},
"engines": {
"node": ">=0.8"
}
},
"node_modules/amqplib": {
"version": "0.10.5",
"resolved": "https://registry.npmjs.org/amqplib/-/amqplib-0.10.5.tgz",
"integrity": "sha512-Dx5zmy0Ur+Q7LPPdhz+jx5IzmJBoHd15tOeAfQ8SuvEtyPJ20hBemhOBA4b1WeORCRa0ENM/kHCzmem1w/zHvQ==",
"license": "MIT",
"dependencies": {
"@acuminous/bitsyntax": "^0.1.2",
"buffer-more-ints": "~1.0.0",
"url-parse": "~1.5.10"
},
"engines": {
"node": ">=10"
}
},
"node_modules/buffer-more-ints": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/buffer-more-ints/-/buffer-more-ints-1.0.0.tgz",
"integrity": "sha512-EMetuGFz5SLsT0QTnXzINh4Ksr+oo4i+UGTXEshiGCQWnsgSs7ZhJ8fzlwQ+OzEMs0MpDAMr1hxnblp5a4vcHg==",
"license": "MIT"
},
"node_modules/debug": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
"integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
"license": "MIT",
"dependencies": {
"ms": "^2.1.3"
},
"engines": {
"node": ">=6.0"
},
"peerDependenciesMeta": {
"supports-color": {
"optional": true
}
}
},
"node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"license": "MIT"
},
"node_modules/querystringify": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
"integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
"license": "MIT"
},
"node_modules/requires-port": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
"integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
"license": "MIT"
},
"node_modules/safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
"license": "MIT"
},
"node_modules/url-parse": {
"version": "1.5.10",
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
"integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
"license": "MIT",
"dependencies": {
"querystringify": "^2.1.1",
"requires-port": "^1.0.0"
}
}
}
}

View File

@ -0,0 +1,5 @@
{
"dependencies": {
"amqplib": "^0.10.5"
}
}

View File

@ -0,0 +1,26 @@
const amqp = require('amqplib/callback_api');
const EXCHANGE_NAME = 'logs';
const EVENT_INTERVAL = 1000;
amqp.connect('amqp://localhost', (err, connection) => {
if (err) {
throw err;
}
connection.createChannel((err, channel) => {
if (err) {
throw err;
}
channel.assertExchange(EXCHANGE_NAME, 'fanout', {
durable: false,
});
setInterval(() => {
const msg = `Event at ${new Date().toISOString()}`;
channel.publish(EXCHANGE_NAME, '', Buffer.from(msg));
console.log(` [x] Sent '${msg}'`);
}, EVENT_INTERVAL);
});
});