UNPKG

earlect

Version:

Leader Election Generic Implementation for TypeScript

48 lines (47 loc) 1.71 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const ts_nats_1 = require("ts-nats"); const __1 = require("../"); class NatsCommunicationMedium { constructor(natsClient) { this.natsClient = natsClient; } static async create(servers) { const natsClient = await ts_nats_1.connect({ maxReconnectAttempts: -1, reconnect: true, reconnectTimeWait: 100, servers, waitOnFirstConnect: true, }); const natsCommunicationMedium = new NatsCommunicationMedium(natsClient); return natsCommunicationMedium; } send(subject, message) { const natsCommunicationMedium = this; natsCommunicationMedium.natsClient.publish(subject, message); } receive(subject, callback) { const natsCommunicationMedium = this; natsCommunicationMedium.natsClient.subscribe(subject, (err, msg) => { if (err) { callback(new __1.CommunicationMediumError("Setting receiveExclusively handler failed", err), undefined); } else { callback(null, msg); } }); } receiveExclusively(subject, callback) { const natsCommunicationMedium = this; natsCommunicationMedium.natsClient.subscribe(subject, (err, msg) => { if (err) { callback(new __1.CommunicationMediumError("Setting receiveExclusively handler failed", err), undefined); } else { callback(null, msg); } }, { queue: "NatsCommunicationMedium" }); } } exports.NatsCommunicationMedium = NatsCommunicationMedium;