abstract-amqp

Simple abstraction of amqp-connection-manager for Typescript.

Usage no npm install needed!

<script type="module">
  import abstractAmqp from 'https://cdn.skypack.dev/abstract-amqp';
</script>

README

Abstract-AMQP

Simple abstraction of amqp-connection-manager for Typescript.

Installation

Abstract-AMQP can be installed via npm npm install --save abstract-amqp.

Usage

Connecting to an AMQP host

Inorder to conenct to an AMQP host using Abstract-AMQP, an instance of AMQPDal must be created with the host address provided. Once created, the ConnectAsync method can be called on the AMQPDAL; this will return the result of the attempted connection.

NOTE: AMQPDal can only connect to one AMQP host at a time.

const main = async () => {
    var amqpDal = new AMQPDal('amqp://localhost');
    var result = await amqpDal.ConnectAsync();
}

main();

Creating a channel

A channel must be created to publish or consume messages from a queue. A channel can be created by using the CreateChannel method; this method takes a queue name and a message handler as parameters. A channel is also automatically created when attempting to send a message to a queue that does not have an associated channel in the AMQPDal.

NOTE: If a message handler is not provided, the channel will be setup to only publish messages.

const main = async () => {
    var amqpDal = new AMQPDal('amqp://localhost');
    const result = await amqpDal.ConnectAsync();
    if (result) {
        console.log('Connected to RabbitMQ.');
        amqpDal.CreateChannel('testQueue', (msg: ConsumeMessage | null) => console.log(msg?.content.toString()));
    }
}

main();

Sending messages

Messages can be published to a queue via the SendToQueueAsync method, this method takes a queue name and a message as parameters. Messages must be in JSON format.

const main = async () => {
    var amqpDal = new AMQPDal('amqp://localhost');
    const result = await amqpDal.ConnectAsync();
    if (result) {
        console.log('Connected to RabbitMQ.');
        amqpDal.CreateChannel('testQueue', (msg: ConsumeMessage | null) => console.log(msg?.content.toString()));
        amqpDal.SendToQueueAsync('testQueue', { content: 'Hellow World!' });
    }
}

main();