/** * Subscribe to balanced action commands * * @param {String} action * @memberof NatsTransporter */ subscribeBalancedRequest(action) { const topic = `${this.prefix}.${PACKET_REQUEST}B.${action}`; const queue = action; this.subscriptions.push(this.client.subscribe(topic, { queue }, (msg) => this.receive(PACKET_REQUEST, msg))); }
beforeEach(() => { transporter = new NatsTransporter(); transporter.init(new Transit(new ServiceBroker({ logger: false, namespace: "TEST", nodeID: "node-123" }))); let p = transporter.connect(); transporter._client.onCallbacks.connect(); // Trigger the `resolve` return p; });
/** * Subscribe to balanced event command * * @param {String} event * @param {String} group * @memberof NatsTransporter */ subscribeBalancedEvent(event, group) { const topic = `${this.prefix}.${PACKET_EVENT}B.${group}.${event}`.replace(/\*\*.*$/g, ">"); this.subscriptions.push(this.client.subscribe(topic, { queue: group }, (msg) => this.receive(PACKET_EVENT, msg))); }
/** * Subscribe to a command * * @param {String} cmd * @param {String} nodeID * * @memberof NatsTransporter */ subscribe(cmd, nodeID) { const t = this.getTopicName(cmd, nodeID); this.client.subscribe(t, msg => this.receive(cmd, msg)); return this.broker.Promise.resolve(); }
nats1.subscribe("MOL.EVENTB.group.test.event", /*{ queue: "group" },*/ message => { broker.logger.info(kleur.green().bold("nodejs-subscriber1: Test event received with payload:"), message); });
/** * Send data buffer. * * @param {String} topic * @param {Buffer} data * @param {Object} meta * * @returns {Promise} */ send(topic, data) { /* istanbul ignore next*/ if (!this.client) return this.broker.Promise.resolve(); return new this.broker.Promise(resolve => { this.client.publish(topic, data, resolve); }); }
/** * Unsubscribe all balanced request and event commands * * @memberof BaseTransporter */ unsubscribeFromBalancedCommands() { return new this.broker.Promise(resolve => { this.subscriptions.forEach(uid => this.client.unsubscribe(uid)); this.subscriptions = []; this.client.flush(resolve); }); }
this._client = client; // For tests client.on("connect", () => { this.client = client; this.logger.info("NATS client is connected."); client.on("reconnect", () => { this.logger.info("NATS client is reconnected."); this.onConnected(true); client.on("reconnecting", () => { this.logger.warn("NATS client is reconnecting..."); }); client.on("disconnect", () => { if (this.connected) { this.logger.warn("NATS client is disconnected."); client.on("error", e => { this.logger.error("NATS error.", e.message); this.logger.debug(e); if (!client.connected) reject(e); }); client.on("close", () => { this.connected = false;
nc1.on("connect", function () { let work1 = function () { let received = 0; let start = new Date(); let sid = nc1.subscribe("test", function () { received += 1; console.log("\nPublished/Subscribe at " + mps + " msgs/sec"); console.log("Received " + received + " messages"); nc1.unsubscribe(sid); setImmediate(work1); nc1.flush(function () { for (let i = 0; i < loop; i++) { nc2.publish("test", "ok"); if (i % hash === 0) { process.stdout.write("+"); nc1.subscribe("ping", msg => { nc1.publish("pong", "ok"); }); nc1.flush(() => { let doWork = function() { nc2.publish("ping", "ok"); }; nc2.subscribe("pong", () => { received += 1;
nats2.subscribe("MOL.EVENTB.group.test.event", /*{ queue: "group" },*/ message => { broker.logger.info(kleur.magenta().bold("nodejs-subscriber2: Test event received with payload:"), message); });
it('Should call close callback even when we did no IO', function(done) { const nats = require('nats').connect(authUrl) const hemera = new Hemera(nats) hemera.ready(() => { hemera.close(err => { expect(err).not.to.be.exists() expect(nats.closed).to.be.equals(true) done() }) }) })
nats2.on('error', err => { console.error(err) })
it('Should validate custom logger', function(done) { const nats = require('nats').connect(authUrl) try { // eslint-disable-next-line no-new new Hemera(nats, { logger: null }) } catch (err) { expect(err).to.be.exists() expect(err.message).to.be.equals( 'child "logger" fails because ["logger" must be an object, "logger" must be an object]' ) nats.close() done() } })
nats1.on('error', err => { console.error(err) })