Skip to content

Instantly share code, notes, and snippets.

@intech
Created March 12, 2020 22:43
Show Gist options
  • Save intech/033f776b7b574f2c22f06377e73d1e94 to your computer and use it in GitHub Desktop.
Save intech/033f776b7b574f2c22f06377e73d1e94 to your computer and use it in GitHub Desktop.
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