Created
March 12, 2020 22:43
-
-
Save intech/033f776b7b574f2c22f06377e73d1e94 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const { ServiceBroker } = require("moleculer"); | |
// Extend with custom middleware | |
const hookMiddleware = (broker) => { | |
const hooks = []; | |
return { | |
name: "HookEvents", | |
localEvent(next, event) { | |
// send http logger ctx | |
return function hookMiddleware(ctx) { | |
console.log("====================================="); | |
console.log(event, ctx.action.name); | |
console.log("====================================="); | |
return next(ctx); | |
}.bind(this); | |
}, | |
created(broker) { | |
broker.logger.info("My r middleware is registred!"); | |
} | |
}; | |
}; | |
const broker1 = new ServiceBroker({ | |
nodeID: "broker1", | |
middlewares: [hookMiddleware()], | |
transporter: { | |
type: "TCP", | |
options: { | |
udpDiscovery: false, | |
port: 5000, | |
urls: [ | |
"localhost:5000/broker1", | |
"localhost:6000/broker2" | |
], | |
} | |
} | |
}); | |
broker1.createService({ | |
name: "b1", | |
events: { | |
"b1.event": { | |
group: "other", | |
handler(ctx) { | |
console.log("\n---------------------"); | |
console.log("Payload:", ctx.params); | |
console.log("Sender:", ctx.nodeID); | |
console.log("Metadata:", ctx.meta); | |
console.log("The called event name:", ctx.eventName); | |
console.log("---------------------\n"); | |
} | |
} | |
}, | |
async started() { | |
await this.broker.waitForServices("b2"); | |
await this.broker.emit("b1.event", { test: "hello from broker1.b1" }); | |
await this.broker.call("b2.test", { from: "b1", to: "b2", message: "hello" }); | |
} | |
}); | |
const broker2 = new ServiceBroker({ | |
nodeID: "broker2", | |
middlewares: [hookMiddleware()], | |
transporter: { | |
type: "TCP", | |
options: { | |
udpDiscovery: false, | |
port: 6000, | |
urls: [ | |
"localhost:5000/broker1", | |
"localhost:6000/broker2" | |
], | |
} | |
} | |
}); | |
broker2.createService({ | |
name: "b2", | |
actions: { | |
async test(ctx) { | |
console.log("\n---------------------"); | |
console.log(ctx.params); | |
console.log("---------------------\n"); | |
// await this.broker.waitForServices("b1"); | |
await this.broker.emit("b1.event", { test: "hello from broker2.b2" }); | |
} | |
} | |
}); | |
broker1.start() | |
.then(() => console.log("Started with broker1")) | |
.catch(err => console.error(`Error start broker: ${err.message}`)); | |
broker2.start() | |
.then(() => console.log("Started with broker2")) | |
.catch(err => console.error(`Error start broker: ${err.message}`)); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment