npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@cortec/rabbitmq

v1.16.1

Published

RabbitMQ client for Cortec

Readme

@cortec/rabbitmq

Module Overview

@cortec/rabbitmq provides a robust integration with RabbitMQ for message queueing, publishing, and consuming. It supports multiple connections, automatic reconnection, error tracking with NewRelic, and consumer buffering. The module is designed to work seamlessly within the Cortec context and supports advanced features like prefetch control and custom error handling.

Configuration Options

Configuration is provided via your config files (e.g., config/default.yml) under the rabbitmq key. Each connection is defined by an identity and must specify connection details.

rabbitmq:
  myQueue:
    connection:
      protocol: amqp # or amqps
      hostname: localhost # RabbitMQ server host
      port: 5672 # RabbitMQ server port
      username: guest # Username for authentication
      password: guest # Password for authentication

Schema:

  • protocol: "amqp" or "amqps"
  • hostname: RabbitMQ server hostname
  • port: RabbitMQ server port (number)
  • username: Username for authentication
  • password: Password for authentication

Example Usage

1. Creating and Using a Channel

import RabbitMQ from '@cortec/rabbitmq';

// Instantiate the module (usually handled by Cortec context)
const rabbitmq = new RabbitMQ();

// After context is loaded:
const channel = rabbitmq.channel('myQueue');

// Send a message to a queue
channel.sendToQueue(
  'jobs',
  JSON.stringify({ type: 'process', payload: { id: 123 } })
);

// Consume messages from a queue
channel.consume('jobs', async (message) => {
  const job = JSON.parse(message);
  // Process job...
  await doWork(job);
});

2. Handling Consumer Errors

If your consumer throws a RabbitRejectError, the message will be nacked and not requeued. Other errors are tracked in NewRelic (if available) and the message is nacked and requeued.

import { RabbitRejectError } from '@cortec/rabbitmq';

channel.consume('jobs', async (message) => {
  try {
    // ...process message
  } catch (err) {
    if (shouldNotRequeue(err)) {
      throw new RabbitRejectError('Do not requeue this message');
    }
    throw err;
  }
});

3. Prefetch Control

You can set the prefetch count for a channel to control how many messages are fetched at once.

channel.prefetch(10); // Fetch up to 10 messages at a time

Features

  • Multiple RabbitMQ connections by identity
  • Automatic reconnection on connection loss
  • Consumer buffering and error handling
  • Integration with NewRelic for error tracking
  • Prefetch control for consumers
  • Masked password logging for security

Health & Disposal

The module handles connection disposal and consumer unbinding automatically when the context is disposed.


For more advanced usage, refer to the implementation in src/index.ts and the configuration schema in your config files.