@wennals/common
Version:
32 lines (31 loc) • 988 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Listener = void 0;
class Listener {
constructor(client) {
this.ackWait = 5 * 1000;
this._client = client;
}
subscriptionOptions() {
return this._client
.subscriptionOptions()
.setDeliverAllAvailable()
.setManualAckMode(true)
.setAckWait(this.ackWait)
.setDurableName(this.queueGroupName);
}
listen() {
const subscription = this._client.subscribe(this.subject, this.queueGroupName, this.subscriptionOptions());
subscription.on('message', (msg) => {
const parsedData = this.parseMessage(msg);
this.onMessage(parsedData, msg);
});
}
parseMessage(msg) {
const data = msg.getData();
return typeof data === 'string'
? JSON.parse(data)
: JSON.parse(data.toString('utf8'));
}
}
exports.Listener = Listener;