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 🙏

© 2024 – Pkg Stats / Ryan Hefner

amqp-simple-client

v2.0.0

Published

A simple wrapper of AMQP support for RabbitMQ/LavinMQ for services communication without overhead

Downloads

385

Readme

AMQP Simple Client

A simple wrapper of AMQP library enabling seamsly integration without effort

Usage:

We need first to create an AmqpClient that will hold or connection so we can create as much producers and consumers we want:

const client = new AmqpClient("<your_amqp_uri>")

with the client we can create a Producer and it will automatically create its exchange if doesn't exists:

interface MyPayload {
    id: number
    name: string
}

const producer = client.createProducer<MyPayload>({
    name: "events",
    durable: true,
    type: "fanout"
})

than we can create a Consumer that automatically create its queue if doesn't exists like follow:

const consumer = client.createConsumer<MyPayload>({
    name: "example-queue",
    options: {
        durable: true
    },
    bindings: {
      exchange: "events",
      routingKey: "example.events"
    }
})

NOTE On the consumer options we have a way of binding its queue to exchanges, although if the exchange doesn't exists it will fail.

we can publish messages to our exchange through our Producer

producer.publish({
    id: 123,
    name: "Luiz Moura"
}, "example.events")

NOTE The second parameter is the routing key, you can omit it if you aren't using. publish also has a third parameter that contains extra options for publishing messages to exchanges as, for example, replyTo, headers, and many more.

and finally we can subscribe to our Consumer and process the messages received:

const subscription = consumer.subscribe(async ({ headers, payload }) => {
    await processMessage(headers, payload)
})

also if we don't need or don't want to consume messages anymore (for whatever reason) we can unsubscribe and end our subscription:

subscription.unsubscribe()

NOTE Unsubscribing stop consuming messages but doesn't delete de queue so you don't loose messages just because you aren't processing them.