newsource-rabbitmq-module
v1.2.0
Published
Newsource module for consuming and publishing rabbitmq messages
Downloads
40
Maintainers
Readme
newsource-rabbitmq-module
Base Requirements
- newsource-winston-splunk-logger-instance
- rabbitmq configuration
# Requires Node >= 10
# Requires newsource-winston-splunk-logger >= 3.x
npm install "newsource-rabbitmq-module"
Code Examples
Instantiation and Cleanup
// Supports named and default exports
import { nsRabbit } from "newsource-rabbitmq-module";
// import default from "newsource-rabbitmq-module"
// Must always start the module before calling any other methods
nsRabbit.start({
config: {
hostname: "example.cloudamqp.com",
password: "password1234",
port: 1234,
username: "example_user",
vhost: "example",
},
// newsource-winston-splunk-logger instance
logger,
// Optional array of queues to subscribe to on start
queues: [
{
name: "example-env.queue",
limit: 20,
},
],
});
// Closes all connections and resets all configuration
await nsRabbit.stop();
Publish Messages
await nsRabbit.publishMessage({
exchange: "example.task",
routingKey: "example.routing.key",
content: {
// some object
},
});
Register Routing Key and Queue Handlers
nsRabbit.handleRoutingKey<ExpectedMessage>(
"example.routing.key",
(msg: Message<ExpectedMessage>) => {
/*
Logic to run when message with routing key received
msg.body will contain parsed JSON of msg.content
Must ack / nack message
* msg.ack();
* msg.nack();
*/
},
);
nsRabbit.consumeQueue({
name: "example-env.queue",
limit: 20, // optional and defaults to 10
});
Unregister Handlers
nsRabbit.stopHandlingRoutingKey("example.routing.key");
nsRabbit.stopConsumingQueue("example-env.queue");
Setup Multiple Server Connections
// Import static class instead of singleton to support setting up multiple connections
import { RabbitMQManager } from "newsource-rabbitmq-module";
const nsRabbit1 = new RabbitMQManager(config1);
const nsRabbit2 = new RabbitMQManager(config2);
TODO
- Setup tests with jest
- Auto publish to npm on release?