All Projects → xogroup → bunnybus

xogroup / bunnybus

Licence: other
Enterprise bus facade for creating a data transit system.

Programming Languages

javascript
184084 projects - #8 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to bunnybus

Remit
RabbitMQ-backed microservices supporting RPC, pubsub, automatic service discovery and scaling with no code changes.
Stars: ✭ 24 (-46.67%)
Mutual labels:  rabbitmq, messaging
Bunny
Bunny is a popular, easy to use, mature Ruby client for RabbitMQ
Stars: ✭ 1,224 (+2620%)
Mutual labels:  rabbitmq, messaging
Rabbitmqbundle
RabbitMQ Bundle for the Symfony2 web framework
Stars: ✭ 1,125 (+2400%)
Mutual labels:  rabbitmq, messaging
Masstransit
Distributed Application Framework for .NET
Stars: ✭ 4,103 (+9017.78%)
Mutual labels:  rabbitmq, messaging
Rabbitmq Mqtt
RabbitMQ MQTT plugin
Stars: ✭ 169 (+275.56%)
Mutual labels:  rabbitmq, messaging
Php Amqplib
The most widely used PHP client for RabbitMQ
Stars: ✭ 3,950 (+8677.78%)
Mutual labels:  rabbitmq, messaging
Humusamqp
PHP 7 AMQP library
Stars: ✭ 70 (+55.56%)
Mutual labels:  rabbitmq, messaging
rabbit
Build Elixir applications with RabbitMQ
Stars: ✭ 36 (-20%)
Mutual labels:  rabbitmq, messaging
Garagemq
AMQP message broker implemented with golang
Stars: ✭ 153 (+240%)
Mutual labels:  rabbitmq, messaging
March hare
Idiomatic, fast and well-maintained JRuby client for RabbitMQ
Stars: ✭ 97 (+115.56%)
Mutual labels:  rabbitmq, messaging
Stompjs
Javascript and Typescript Stomp client for Web browsers and node.js apps
Stars: ✭ 324 (+620%)
Mutual labels:  rabbitmq, messaging
Rabbitmq Objc Client
RabbitMQ client for Objective-C and Swift
Stars: ✭ 207 (+360%)
Mutual labels:  rabbitmq, messaging
Langohr
A small, feature complete Clojure client for RabbitMQ that embraces AMQP 0.9.1 model
Stars: ✭ 309 (+586.67%)
Mutual labels:  rabbitmq, messaging
Servicebus
Simple service bus for sending events between processes using amqp.
Stars: ✭ 415 (+822.22%)
Mutual labels:  rabbitmq, messaging
rabbitmq-stomp
RabbitMQ STOMP plugin
Stars: ✭ 49 (+8.89%)
Mutual labels:  rabbitmq, messaging
Rabbitmq Server
Open source RabbitMQ: core server and tier 1 (built-in) plugins
Stars: ✭ 9,064 (+20042.22%)
Mutual labels:  rabbitmq, messaging
rabbitmq-jms-client
RabbitMQ JMS client
Stars: ✭ 51 (+13.33%)
Mutual labels:  rabbitmq, messaging
Rabbitmq Amqp1.0
AMQP 1.0 support for RabbitMQ
Stars: ✭ 88 (+95.56%)
Mutual labels:  rabbitmq, messaging
Kombu
Kombu is a messaging library for Python.
Stars: ✭ 2,263 (+4928.89%)
Mutual labels:  rabbitmq, messaging
sample-spring-cloud-stream
sample microservices communicating asynchronously using spring cloud stream, rabbitmq
Stars: ✭ 22 (-51.11%)
Mutual labels:  rabbitmq, messaging

bunnybus

BunnyBus is a high level enterprise bus implementation making pub/sub and queue management easy.

Currently supports the following queueing frameworks.

Lead Maintainer: Lam Chan

Introduction

BunnyBus abstracts away low level queue driver details such as creating a connection, creating a channel, creating bindings, creating subscribing queues and etc. BunnyBus provides safe defaults for many setups which can also be configured. The core of BunnyBus implements native node callbacks providing maximum performance. BunnyBus provides two flavors of API for callbacks and Promise alike. The BunnyBus CLI can be found here implementing this core driver.

If you require strict FIFO behavior keep in mind that while your handlers will be called in order, if you yield to the event loop you may resolve out of order. BunnyBus contains an optional setting to enforce strict FIFO behavior, but this comes at significant performance penalty and shouldn't be used by most consumers. You can enable this behavior in your bunnybus config by setting server.dispatchType to 'serial'.

Installation

➜  npm i bunnybus

Usage

Async / Await

const BunnyBus = require('bunnybus');
const bunnyBus = new BunnyBus();

//create a subscription
await bunnyBus.subscribe('queue1', { 
    'create-event' : async (message, ack) => {
        console.log(message.comment);
        await ack();
    }}
);

//publish to the above subscription
await bunnyBus.publish({ event : 'create-event', comment : 'hello world!' });

);

Documentation

API

See the API Reference.

Examples

Check out the Examples.

Diagrams

Visual Guide to integrating with BunnyBus.

Articles

Contributing

We love community and contributions! Please check out our guidelines before making any PRs.

Setting up for development

  1. Install Docker
  2. Clone this project and cd into the project directory
  3. Run the commands below
npm install
npm run start-docker
npm test
npm run stop-docker

For normal development/test iterations, there is no need to stop the docker container. When the docker container is already running, just run npm test.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].