2.0.0 • Published 9 months ago

amqp-simple-client v2.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
9 months ago

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.

2.0.0

9 months ago

1.0.3

9 months ago

1.0.2

9 months ago

1.0.1

9 months ago

1.0.0

9 months ago