@financialforcedev/orizuru-transport-rabbitmq
Version:
Rabbitmq transport layer for the orizuru package
75 lines • 9.6 kB
JavaScript
;
/**
* Copyright (c) 2017-2018 FinancialForce.com, inc
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* - Neither the name of the FinancialForce.com, inc nor the names of its contributors
* may be used to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
Object.defineProperty(exports, "__esModule", { value: true });
/**
* @private
*/
class Subscriber {
constructor(channel) {
this.channel = channel;
}
async init(options) {
this.eventName = options.eventName;
if (options.exchange) {
const { exchange } = options;
const { name, type } = exchange;
const key = exchange.key || '';
await this.channel.assertExchange(name, type, { durable: false });
// Ensure the queue exists
await this.channel.assertQueue(this.eventName);
// Bind to the queue
await this.channel.bindQueue(this.eventName, name, key);
}
else {
// Ensure the queue exists
this.channel.assertQueue(this.eventName);
}
}
async subscribe(handler) {
if (!this.eventName) {
throw new Error('Subscriber has not been initialised.');
}
this.channel.consume(this.eventName, async (message) => {
if (message) {
try {
const handlerResponse = await handler(message.content);
if (handlerResponse && handlerResponse.retry) {
await this.channel.nack(message, false, true);
}
else {
await this.channel.ack(message);
}
}
catch (err) {
await this.channel.ack(message);
}
}
});
}
}
exports.Subscriber = Subscriber;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaWJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2luZGV4L3N1YnNjcmliZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCRzs7QUFJSDs7R0FFRztBQUNILE1BQWEsVUFBVTtJQUt0QixZQUFZLE9BQWdCO1FBQzNCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFTSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQXFDO1FBRXRELElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUVuQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUU7WUFFckIsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLE9BQU8sQ0FBQztZQUM3QixNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQztZQUNoQyxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQztZQUUvQixNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUVsRSwwQkFBMEI7WUFDMUIsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFL0Msb0JBQW9CO1lBQ3BCLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FFeEQ7YUFBTTtZQUNOLDBCQUEwQjtZQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDekM7SUFFRixDQUFDO0lBRU0sS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFzRTtRQUU1RixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7U0FDeEQ7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxPQUF1QixFQUFFLEVBQUU7WUFFdEUsSUFBSSxPQUFPLEVBQUU7Z0JBRVosSUFBSTtvQkFFSCxNQUFNLGVBQWUsR0FBRyxNQUFNLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ3ZELElBQUksZUFBZSxJQUFJLGVBQWUsQ0FBQyxLQUFLLEVBQUU7d0JBQzdDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztxQkFDOUM7eUJBQU07d0JBQ04sTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztxQkFDaEM7aUJBRUQ7Z0JBQUMsT0FBTyxHQUFHLEVBQUU7b0JBQ2IsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDaEM7YUFFRDtRQUVGLENBQUMsQ0FBQyxDQUFDO0lBRUosQ0FBQztDQUVEO0FBL0RELGdDQStEQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE3LTIwMTggRmluYW5jaWFsRm9yY2UuY29tLCBpbmNcbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbixcbiAqICAgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OlxuICpcbiAqIC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLFxuICogICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuICogLSBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsXG4gKiAgICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb25cbiAqICAgICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG4gKiAtIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIEZpbmFuY2lhbEZvcmNlLmNvbSwgaW5jIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9yc1xuICogICAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dFxuICogICAgICBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uXG4gKlxuICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBcIkFTIElTXCIgQU5EXG4gKiAgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFU1xuICogIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMXG4gKiAgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsXG4gKiAgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTXG4gKiAgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZXG4gKiAgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpXG4gKiAgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKi9cblxuaW1wb3J0IHsgQ2hhbm5lbCwgTWVzc2FnZSB9IGZyb20gJ2FtcXBsaWInO1xuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbmV4cG9ydCBjbGFzcyBTdWJzY3JpYmVyIHtcblxuXHRwcml2YXRlIHJlYWRvbmx5IGNoYW5uZWw6IENoYW5uZWw7XG5cdHByaXZhdGUgZXZlbnROYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cblx0Y29uc3RydWN0b3IoY2hhbm5lbDogQ2hhbm5lbCkge1xuXHRcdHRoaXMuY2hhbm5lbCA9IGNoYW5uZWw7XG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgaW5pdChvcHRpb25zOiBPcml6dXJ1LlRyYW5zcG9ydC5JU3Vic2NyaWJlKSB7XG5cblx0XHR0aGlzLmV2ZW50TmFtZSA9IG9wdGlvbnMuZXZlbnROYW1lO1xuXG5cdFx0aWYgKG9wdGlvbnMuZXhjaGFuZ2UpIHtcblxuXHRcdFx0Y29uc3QgeyBleGNoYW5nZSB9ID0gb3B0aW9ucztcblx0XHRcdGNvbnN0IHsgbmFtZSwgdHlwZSB9ID0gZXhjaGFuZ2U7XG5cdFx0XHRjb25zdCBrZXkgPSBleGNoYW5nZS5rZXkgfHwgJyc7XG5cblx0XHRcdGF3YWl0IHRoaXMuY2hhbm5lbC5hc3NlcnRFeGNoYW5nZShuYW1lLCB0eXBlLCB7IGR1cmFibGU6IGZhbHNlIH0pO1xuXG5cdFx0XHQvLyBFbnN1cmUgdGhlIHF1ZXVlIGV4aXN0c1xuXHRcdFx0YXdhaXQgdGhpcy5jaGFubmVsLmFzc2VydFF1ZXVlKHRoaXMuZXZlbnROYW1lKTtcblxuXHRcdFx0Ly8gQmluZCB0byB0aGUgcXVldWVcblx0XHRcdGF3YWl0IHRoaXMuY2hhbm5lbC5iaW5kUXVldWUodGhpcy5ldmVudE5hbWUsIG5hbWUsIGtleSk7XG5cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gRW5zdXJlIHRoZSBxdWV1ZSBleGlzdHNcblx0XHRcdHRoaXMuY2hhbm5lbC5hc3NlcnRRdWV1ZSh0aGlzLmV2ZW50TmFtZSk7XG5cdFx0fVxuXG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgc3Vic2NyaWJlKGhhbmRsZXI6IChjb250ZW50OiBCdWZmZXIpID0+IFByb21pc2U8dm9pZCB8IE9yaXp1cnUuSUhhbmRsZXJSZXNwb25zZT4pIHtcblxuXHRcdGlmICghdGhpcy5ldmVudE5hbWUpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignU3Vic2NyaWJlciBoYXMgbm90IGJlZW4gaW5pdGlhbGlzZWQuJyk7XG5cdFx0fVxuXG5cdFx0dGhpcy5jaGFubmVsLmNvbnN1bWUodGhpcy5ldmVudE5hbWUsIGFzeW5jIChtZXNzYWdlOiBNZXNzYWdlIHwgbnVsbCkgPT4ge1xuXG5cdFx0XHRpZiAobWVzc2FnZSkge1xuXG5cdFx0XHRcdHRyeSB7XG5cblx0XHRcdFx0XHRjb25zdCBoYW5kbGVyUmVzcG9uc2UgPSBhd2FpdCBoYW5kbGVyKG1lc3NhZ2UuY29udGVudCk7XG5cdFx0XHRcdFx0aWYgKGhhbmRsZXJSZXNwb25zZSAmJiBoYW5kbGVyUmVzcG9uc2UucmV0cnkpIHtcblx0XHRcdFx0XHRcdGF3YWl0IHRoaXMuY2hhbm5lbC5uYWNrKG1lc3NhZ2UsIGZhbHNlLCB0cnVlKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5jaGFubmVsLmFjayhtZXNzYWdlKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5jaGFubmVsLmFjayhtZXNzYWdlKTtcblx0XHRcdFx0fVxuXG5cdFx0XHR9XG5cblx0XHR9KTtcblxuXHR9XG5cbn1cbiJdfQ==