1.2.0 • Published 5 years ago

evaqueue v1.2.0

Weekly downloads
1
License
MIT
Repository
github
Last release
5 years ago

EvaQueue.js

NPM version Build Status Dependencies Status npm License

EvaQueue.js provide a unified API across different high performance queue backends, including Kafka, AliMNS or other message queues which could be customized.

Features:

  • Same API for Kafka / AliMNS / others
  • Only install necessary message queue library, EvaQueue work as a peer dependency
  • High level API, easier for understanding and using
  • Built-In graceful exit
  • Written by TypeScript, IDE friendly

Quick start

npm install evaqueue ali-mns node-rdkafka

EvaQueue.js will installed as peer dependency, you are free to install queue libs which only required.

NOTE: if install node-rdkafka met error ld: symbol(s) not found for architecture x86_64, try below command to fix

CPPFLAGS=-I/usr/local/opt/openssl/include LDFLAGS=-L/usr/local/opt/openssl/lib npm install

Use as Producer & Consumer

Produce a message to queue:

import MQ from 'evaqueue';
import Message from 'evaqueue/message';

const manager = new MQ(
  require('./config'),
  console,
);
const producer = manager.getProducer();

(async () => {
  try {
    const msg = await producer.produce(new Message({ foo: 'bar' }));
    console.log('[%s] producing %o', producer.name, msg);
  } catch (e) {
    console.error(e);
  }
})();

Consume messages from queue:

import MQ from 'evaqueue';

const manager = new MQ(
  require('./config'),
  console,
);
const consumer = manager.getConsumer();

(async () => {
  await consumer.consuming(
    async (err, message) => {
      console.log('[%s] consuming %o', consumer.name, message);
    },
    3,
  );
})();

consumer.enableGracefulExit();

Switch default Ali-MNS / Kafka

Just change config file

{
  defaultInstance: 'kafka_default'
}

to

{
  defaultInstance: 'mns_default'
}

or switch manually by:

const manager = new MQ(
  require('./config'),
  console,
);
const consumer = manager.getConsumer('mns_another');

Try more examples

Examples

Development

git clone git@github.com:bmqb/EvaQueue.js.git
cd EvaQueue.js
brew install jq
npm install
npm run install:peers

node-rdkafka promisfy codes some from https://github.com/joway/node-kfk

1.2.0

5 years ago

1.1.0

5 years ago

1.0.3

6 years ago

1.0.2

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago

0.0.5

7 years ago

0.0.4

7 years ago

0.0.3

7 years ago

0.0.2

7 years ago

0.0.1

7 years ago