Java
Need help with banyan?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.
yanghua

Description

a message bus implemented with RabbitMQ

138 Stars 61 Forks 215 Commits 2 Opened issues

Services available

Need anything else?

overview

Build Status

img 15

banyan is a tree has thick branches which grows in the East Asia. 

Thanks for @ok95 & @Joy-Zhang given the good idea & guidance.

img 14

banyan used to communicate and integrate over multi-app. It depends on RabbitMQ as backend broker(message exchanger). Most scenario:

  • enterprise information Integration
  • oriented-component & oriented-module distributed developer
  • infrastructure for esb or soa
  • json-rpc / IDL-RPC(thrift)
  • configured compress/uncompress
  • http-bridge for all platform
  • web-console UI

the necessity of encapsulating with RabbitMQ:

  • provide router pattern
  • embed permission into client-jar
  • removed create & delete & update operation from client, replaced with central-register mode

more information please see : banyan-category

tree topology structure

the message bus's implementation is based on Rabbitmq. It can takes advantage of multiple message exchange-types rabbitmq provided and builds many kinds of router pattern. The message bus's router topology lists below:

img 3

the advantages of the tree topology:

  • hide the router topology from client-caller (just need to know the
    proxy
    node)
  • multiple message communication pattern (p2p, pub/sub, broadcast)
  • implement the message log without interrupting the message channel
  • communication-policy configure once , push everywhere

web-console

banyan has its' own web console that built as a Apache-ofbiz's component. The web console provide a dashboard about rabbitmq :

img 16

and some core model's maintenance such as queue :

img 17

Restful API

scenario & usage

produce & consume

request & response

publish & subscirbe

broadcast & notification-handler

json-rpc(wrapped-offical-java-client)

thrift-rpc(thrid-party-rpc-integrated)

http-restful

benchmark

it shows the

client
performance:

hardware

client :

OS : Mac os x Yosemite (version 10.10)
Processor : 2.5GHz Intel Core i5
Memory : 8GB 1600 MHz DDR3
JDK Version : 1.7.0_45

server :

OS : Ubuntu Server 14.04.1 (GNU/Linux 3.13.0-37-generic x86_64)
Processor : Intel(R) Xeon(R) CPU E3-1230 V2 @ 3.30GHz (8核)
Memory : 8GB
JDK Version : 1.7.0_72

produce

  • single thread,multiple message size ,cycle send,compare:

img 10

  • single thread,same message size,use client channel pool or not,compare:

img 11

consume

  • single thread,multiple message size,async receive,compare:

img 12

  • single thread,same message size,use client channel pool or not,compare:

img 13

licence

Copyright (c) 2014-2015 yanghua. All rights reserved.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.