amqp-simple-client
v2.0.0
Published
A simple wrapper of AMQP support for RabbitMQ/LavinMQ for services communication without overhead
Downloads
385
Maintainers
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.