amqp-extension
TypeScript icon, indicating that this package has built-in type declarations

3.3.0 • Public • Published

AMQP Extension 🏰

npm version codecov Master Workflow Known Vulnerabilities semantic-release: angular

This is a library on top of the amqplib library and is meant to simplify the process of consuming & publishing queue messages.

Table of Contents

Installation

npm install amqp-extension --save

Usage

Publish to Queue

The publish method allows you to send messages quickly. Existing options can be added or overwritten

import { Client } from "amqp-extension";

const client = new Client({
    connection: 'amqp://<user>:<password>@<host>',
    exchange: {
        name: '<name>',
        type: 'topic'
    }
});

(async () => {
    await client.publish({
        content: {
            type: 'resourceCreated',
            name: 'foo'
        }
    });
})();

Consume Queue

To consume a queue use the consume function. As first argument it accepts a configuration object and as second argument and object to specify an async callback function handler for a specific message type.

import {
    Client,
    ConsumeMessage,
    ConsumeOptions,
} from "amqp-extension";

const client = new Client({
    connection: 'amqp://<user>:<password>@<host>',
    exchange: {
        name: '<name>',
        type: 'topic'
    }
});

const options: ConsumeOptions = {
    exchange: {
        routingKey: '<routing-key>'
    }
}

(async () => {
    await client.consume(options, {
        resourceCreated: async (message: ConsumeMessage) => {
            const content = message.content.toString('utf-8');
            const payload = JSON.parse(content);
            console.log(payload);
            // { type: 'resourceCreated', name: 'foo' }
        }
    });
})();

Functions

publish

function publish(message: Message, options?: PublishOptions): Promise<void>

Send the constructed queue message to the message broker. As second parameter a registered config can be used by specifying the alias or provide the full config object.

Example

Simple

import { Client } from "amqp-extension";

const client = new Client({
    // ...
});

(async () => {
    await client.publish({
        content: {
            type: 'resourceCreated'
        }
    });
})();

Type parameters

Name Description

Parameters

Name Type Description
message Message Constructed message object.
options PublishOptions Publish options.

Returns

Promise<void>

The function does not return a value.

consume

function consume(options: ConsumeOptions, cb: ConsumeHandlers): Promise<void>

Send the constructed queue message to the message broker. As second parameter a registered config can be used by specifying the alias or provide the full config object.

Example

Simple

import {
    Client,
    ConsumeOptions,
    ConsumeMessage,
} from "amqp-extension";

const client = new Client({
    // ...
});

const options: ConsumeOptions = {
    routingKey: '<routing-key>'
}

(async () => {
    await client.consume(options, {
        '<type>': async (message: ConsumeMessage) => {
            // do some async action :)
        }
    });
})();

Type parameters

Name Description

Parameters

Name Type Description
options ConsumeOptions Consume options. )
handlers ConsumeHandlers Handlers object.

Returns

Promise<void>

The function does not return a value.

Types

Config Types

import { Options } from 'amqplib';
import { ExchangeOptions } from '../exchange';
import { ConsumeOptions, PublishOptions } from '../type';

export type Config = {
    connection: Options.Connect | string,
    exchange: ExchangeOptions,
    publish: PublishOptions,
    consume: ConsumeOptions
};

export type ConfigInput = Partial<Exclude<Config, 'connection'>> &
    Pick<Config, 'connection'>;

License

Made with 💚

Published under MIT License.

Package Sidebar

Install

npm i amqp-extension

Weekly Downloads

58

Version

3.3.0

License

MIT

Unpacked Size

34.5 kB

Total Files

46

Last publish

Collaborators

  • tada5hi