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
npm install amqp-extension --save
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'
}
});
})();
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' }
}
});
})();
▸ 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.
Simple
import { Client } from "amqp-extension";
const client = new Client({
// ...
});
(async () => {
await client.publish({
content: {
type: 'resourceCreated'
}
});
})();
Name | Description |
---|
Name | Type | Description |
---|---|---|
message |
Message |
Constructed message object. |
options |
PublishOptions |
Publish options. |
Promise<void>
The function does not return a value.
▸ 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.
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 :)
}
});
})();
Name | Description |
---|
Name | Type | Description |
---|---|---|
options |
ConsumeOptions |
Consume options. ) |
handlers |
ConsumeHandlers |
Handlers object. |
Promise<void>
The function does not return a value.
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'>;
Made with 💚
Published under MIT License.