UNPKG

@webda/amqp

Version:

Implements AMQP on webda

64 lines 1.63 kB
import { JSONUtils, Queue, QueueParameters } from "@webda/core"; import * as amqplib from "amqplib"; export class AMQPQueueParameters extends QueueParameters { } /** * Implements a Queue stored in AMQP * * @WebdaModda */ export default class AMQPQueue extends Queue { /** * @override */ loadParameters(params) { return new AMQPQueueParameters(params); } /** * @override */ async init() { await super.init(); this.conn = await amqplib.connect(this.parameters.url); this.channel = await this.conn.createChannel(); await this.channel.assertQueue(this.parameters.queue, this.parameters.queueOptions); return this; } /** * @override */ async sendMessage(event) { await this.channel.sendToQueue(this.parameters.queue, Buffer.from(JSONUtils.stringify(event))); } /** * @override */ async receiveMessage(proto) { let msg = await this.channel.get(this.parameters.queue); if (msg === false) { return []; } return [ { ReceiptHandle: msg, Message: this.unserialize(msg.content.toString(), proto) } ]; } /** * @override */ async deleteMessage(id) { await this.channel.ack(id); } /** * @override */ async size() { return (await this.channel.assertQueue(this.parameters.queue)).messageCount; } async ___cleanData() { await this.channel.purgeQueue(this.parameters.queue); } } //# sourceMappingURL=queue.js.map