Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
03e81435e2 |
78
index.js
Normal file
78
index.js
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
const amqp = require('amqplib'); // For RabbitMQ
|
||||||
|
const { v4: uuidv4 } = require('uuid'); // Generate unique IDs for messages
|
||||||
|
const winston = require('winston'); // For logging
|
||||||
|
|
||||||
|
// Configure logging using winston
|
||||||
|
const logger = winston.createLogger({
|
||||||
|
level: 'info',
|
||||||
|
format: winston.format.combine(
|
||||||
|
winston.format.timestamp(),
|
||||||
|
winston.format.printf(({ timestamp, level, message }) => `${timestamp} - ${level.toUpperCase()}: ${message}`)
|
||||||
|
),
|
||||||
|
transports: [
|
||||||
|
new winston.transports.Console(),
|
||||||
|
new winston.transports.File({ filename: 'app.log' })
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
// RabbitMQ Configuration
|
||||||
|
const RABBITMQ_URL = 'amqp://localhost';
|
||||||
|
const EXCHANGE_NAME = 'df.metadata';
|
||||||
|
const ROUTING_KEY = 'metadata-sink';
|
||||||
|
|
||||||
|
// Mock Resource Object
|
||||||
|
const resourceData = {
|
||||||
|
columns: [],
|
||||||
|
dataSetId: "01234567890123456789abcd",
|
||||||
|
description: "description",
|
||||||
|
isEnriched: false,
|
||||||
|
name: "name",
|
||||||
|
organizationId: "2dceb541-a1c1-4f38-96a4-9052dd69133e",
|
||||||
|
projectId: "01234567890123456789abcd",
|
||||||
|
resourceId: "a9aecd83-058e-4d6f-9fb9-f62a0e86246c",
|
||||||
|
resourceType: "asset",
|
||||||
|
tags: []
|
||||||
|
};
|
||||||
|
|
||||||
|
async function sendMessageToRabbitMQ() {
|
||||||
|
let connection;
|
||||||
|
try {
|
||||||
|
// Step 1: Connect to RabbitMQ
|
||||||
|
connection = await amqp.connect(RABBITMQ_URL);
|
||||||
|
const channel = await connection.createChannel();
|
||||||
|
|
||||||
|
// Step 2: Assert the exchange
|
||||||
|
await channel.assertExchange(EXCHANGE_NAME, 'topic', { durable: true });
|
||||||
|
|
||||||
|
// Step 3: Publish the message
|
||||||
|
const message = {
|
||||||
|
id: uuidv4(),
|
||||||
|
timestamp: new Date().toISOString(),
|
||||||
|
resource: resourceData
|
||||||
|
};
|
||||||
|
const messageBuffer = Buffer.from(JSON.stringify(message));
|
||||||
|
|
||||||
|
const result = channel.publish(EXCHANGE_NAME, ROUTING_KEY, messageBuffer);
|
||||||
|
|
||||||
|
// Logging results
|
||||||
|
if (result) {
|
||||||
|
logger.info('Message successfully published to RabbitMQ');
|
||||||
|
} else {
|
||||||
|
logger.warn('Message was not confirmed by RabbitMQ');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Close the channel
|
||||||
|
await channel.close();
|
||||||
|
} catch (error) {
|
||||||
|
logger.error(`Error sending message to RabbitMQ: ${error.message}`);
|
||||||
|
} finally {
|
||||||
|
if (connection) {
|
||||||
|
await connection.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Main Execution
|
||||||
|
sendMessageToRabbitMQ().catch((error) => {
|
||||||
|
logger.error(`Unexpected error occurred: ${error.message}`);
|
||||||
|
});
|
||||||
Loading…
Reference in New Issue
Block a user