earlect
Version:
Leader Election Generic Implementation for TypeScript
48 lines (47 loc) • 1.71 kB
JavaScript
;
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;