1.0.2 • Published 20 days ago

newsource-rabbitmq-module v1.0.2

Weekly downloads
-
License
ISC
Repository
github
Last release
20 days ago

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");

TODO

  • Setup tests with jest
  • Auto publish to npm on release?
1.0.2

20 days ago

1.0.1

21 days ago

1.0.0

22 days ago