@coolgk/amqp
a javascript / typescript module
npm install @coolgk/amqp
a simple RabbitMQ (amqp wrapper) class for publishing and consuming messages
Report bugs here: https://github.com/coolgk/node-utils/issues
Examples
import { Amqp } from '@coolgk/amqp';
// OR
// const { Amqp } = require('@coolgk/amqp');
const amqp = new Amqp({
url: 'amqp://localhost/vhost'
});
const message = {
a: 1,
b: 'b'
};
// CONSUMER MUST BE STARTED FIRST BEFORE PUSHLISHING ANY MESSAGE
// consumer.js
// consume message and return (send) a response back to publisher
amqp.consume(({rawMessage, message}) => {
console.log('consumer received', message); // consumer received ignore response
// consumer received { a: 1, b: 'b' }
return {
response: 'response message'
}
});
// publisher.js
// publish a message, no response from consumer
amqp.publish('ignore response');
// publish a message and handle response from consumer
amqp.publish(message, ({rawResponseMessage, responseMessage}) => {
console.log('response from consumer', responseMessage); // response from consumer { response: 'response message' }
});
// example to add:
// consume from (multiple) routes
// round robin consumers
// direct route + a catch all consumer
Amqp
Kind: global class
-
Amqp
- new Amqp(options)
-
.closeConnection() ⇒
void
-
.publish(message, [callback], [options]) ⇒
promise.<Array.<boolean>>
-
.consume(callback, [options]) ⇒
promise
-
.getChannel() ⇒
promise
new Amqp(options)
Param | Type | Description |
---|---|---|
options | object |
|
options.url | string |
connection string e.g. amqp://localhost |
[options.sslPem] | string |
pem file path |
[options.sslCa] | string |
sslCa file path |
[options.sslPass] | string |
password |
void
amqp.closeConnection() ⇒ Kind: instance method of Amqp
promise.<Array.<boolean>>
amqp.publish(message, [callback], [options]) ⇒ Kind: instance method of Amqp
Param | Type | Default | Description |
---|---|---|---|
message | * |
message any type that can be JSON.stringify'ed | |
[callback] | function |
callback(message) for processing response from consumers | |
[options] | object |
||
[options.routes] |
string | Array.<string>
|
"['#']" |
route names |
[options.exchangeName] | string |
"'defaultExchange'" |
exchange name |
promise
amqp.consume(callback, [options]) ⇒ Kind: instance method of Amqp
Param | Type | Default | Description |
---|---|---|---|
callback | function |
consumer(message) function should returns a promise | |
[options] | object |
||
[options.routes] |
string | Array.<string>
|
"['#']" |
exchange routes |
[options.queueName] | string |
"''" |
queue name for processing messages. consumers with the same queue name process messages in round robin style |
[options.exchangeName] | string |
"'defaultExchange'" |
exchange name |
[options.exchangeType] | string |
"'topic'" |
exchange type |
[options.priority] | number |
0 |
priority, larger numbers indicate higher priority |
[options.prefetch] | number |
1 |
1 or 0, if to process request one at a time |
promise
amqp.getChannel() ⇒ Kind: instance method of Amqp
Returns: promise
- - promise