class MessageQueue {
constructor(name) {
this.name = name;
this.topics = {}; // topic: [message1, message2, ...]
}
subscribe(topic, callback) {
if (!this.topics[topic]) {
this.topics[topic] = [];
}
this.topics[topic].push(callback);
}
publish(topic, message) {
if (this.topics[topic]) {
this.topics[topic].forEach(callback => callback(message));
}
}
}
class DryRunMessageQueueInitializer {
constructor() {
this.queues = {};
}
createQueue(name) {
this.queues[name] = new MessageQueue(name);
}
// Allows manual topic and message configuration for dry-run
configureTopic(queueName, topic, messages) {
if (!this.queues[queueName]) {
console.warn(`Queue "${queueName}" does not exist.`);
return;
}
this.queues[queueName].topics[topic] = messages;
}
//Allows manual subscription configuration
configureSubscription(queueName, topic, callback) {
if (!this.queues[queueName]) {
console.warn(`Queue "${queueName}" does not exist.`);
return;
}
this.queues[queueName].subscribe(topic, callback);
}
}
//Example usage:
// const initializer = new DryRunMessageQueueInitializer();
// initializer.createQueue("myQueue");
// initializer.configureTopic("myQueue", "topic1", ["message1", "message2"]);
// initializer.configureSubscription("myQueue", "topic1", (message) => console.log(`Received: ${message}`));
// initializer.publish("myQueue", "testMessage");
Add your comment