Coder Social home page Coder Social logo

egg-amqplib-tf's Introduction

egg-amqplib-tf

This module adds AMQP connection manager on the basis of egg-amqplib Amqp plugin for egg with amqplib, Use connection manager to maintain MQ connection and support automatic reconnection!

Chinese

中文说明

Install

$ npm i egg-amqplib-tf --save

Usage

// config/plugin.js
exports.amqplib = {
  enable: true,
  package: 'egg-amqplib-tf',
};

Configuration

// {app_root}/config/config.default.js
exports.amqplib = {
  client: {
    connectOptions: {
      protocol: 'amqp',
      hostname: 'localhost',
      port: 5672,
      username: 'guest',
      password: 'guest',
      locale: 'en_US',
      frameMax: 0,
      heartbeat: 0,
      vhost: '/',
    },
    // socketOptions: {
    //   cert: certificateAsBuffer, // client cert
    //   key: privateKeyAsBuffer, // client key
    //   passphrase: 'MySecretPassword', // passphrase for key
    //   ca: [caCertAsBuffer], // array of trusted CA certs
    // },
  },
};

Example

  // Ask the connection manager for a ChannelWrapper.  Specify a setup function to
  // run every time we reconnect to the broker.
  const channelWrapper = await connection.createChannel({
    json: true,
    setup: (channel) => {
      // `channel` here is a regular amqplib `ConfirmChannel`.
      // Note that `this` here is the channelWrapper instance.
      return channel.assertQueue('rxQueueName', {durable: true});
    }
  });

  // Send some messages to the queue.  If we're not currently connected, these will be queued up in memory
  // until we connect.  Note that `sendToQueue()` and `publish()` return a Promise which is fulfilled or rejected
  // when the message is actually sent (or not sent.)
  channelWrapper.sendToQueue('rxQueueName', {hello: 'world'})
  .then(function() {
      return console.log("Message was sent!  Hooray!");
  }).catch(function(err) {
      return console.log("Message was rejected...  Boo!");
  });

  // Sometimes it's handy to modify a channel at run time. For example, suppose you have a channel that's listening to one kind of message, and you decide you now also want to listen to some other kind of message. This can be done by adding a new setup function to an existing ChannelWrapper:
  channelWrapper.addSetup(function(channel) {
      return Promise.all([
          channel.assertQueue("my-queue", { exclusive: true, autoDelete: true }),
          channel.bindQueue("my-queue", "my-exchange", "create"),
          channel.consume("my-queue", handleMessage)
      ])
  });

API Document

More instructions here.

Questions & Suggestions

Please open an issue here.

License

MIT

egg-amqplib-tf's People

Contributors

meguoe avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.