AMQP Extension 🏰
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);
}
});
})();
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
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) => {
}
});
})();
Type parameters
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.