Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

AMQP message broker implemented with golang

License

NotificationsYou must be signed in to change notification settings

valinurovam/garagemq

Repository files navigation

GarageMQ is a message broker that implement the Advanced Message Queuing Protocol (AMQP). Compatible with any AMQP or RabbitMQ clients (tested streadway/amqp and php-amqp lib)

Table of Contents

Goals of this project

  • Have fun and learn a lot
  • Implement AMQP message broker in Go
  • Make protocol compatible with RabbitMQ and standard AMQP 0-9-1.

Demo

Simple demo server on Digital Ocean,2 GB Memory / 25 GB Disk / FRA1 - Ubuntu Docker 17.12.0~ce on 16.04

ServerPortAdmin portLoginPasswordVirtual Host
46.101.117.78567215672guestguest/

Installation and Building

Docker

The quick way to start with GarageMQ is by usingdocker. You can build it by your own or pull from docker-hub

docker pull amplitudo/garagemqdocker run --name garagemq -p 5672:5672 -p 15672:15672 amplitudo/garagemq

or

go get -u github.com/valinurovam/garagemq/...cd$GOPATH/src/github.com/valinurovam/garagemqdocker build -t garagemq.docker run --name garagemq -p 5672:5672 -p 15672:15672 garagemq

Go get

You can also usego get:go get -u github.com/valinurovam/garagemq/...

go get -u github.com/valinurovam/garagemq/...cd$GOPATH/src/github.com/valinurovam/garagemqmake build.all&& make run

Execution flags

FlagDefaultDescriptionENV
--configdefault configConfig pathGMQ_CONFIG
--log-filestdoutLog file path orstdout,stderrGMQ_LOG_FILE
--log-levelinfoLogger levelGMQ_LOG_LEVEL
--hproffalseEnable or disablehprof profilerGMQ_HPROF
--hprof-host0.0.0.0Profiler hostGMQ_HPROF_HOST
--hprof-port8080Profiler portGMQ_HPROF_PORT

Default config params

# Proto name to implement (amqp-rabbit or amqp-0-9-1)proto:amqp-rabbit# User listusers:  -username:guestpassword:084e0343a0486ff05530df6c705c8bb4# guest md5# Server TCP settingstcp:ip:0.0.0.0port:5672nodelay:falsereadBufSize:196608writeBufSize:196608# Admin-server settingsadmin:ip:0.0.0.0port:15672queue:shardSize:8192maxMessagesInRam:131072# DB settingsdb:# default pathdefaultPath:db# backend engine (badger or buntdb)engine:badger# Default virtual host pathvhost:defaultPath:/# Security check rule (md5 or bcrypt)security:passwordCheck:md5connection:channelsMax:4096frameMaxSize:65536

Performance tests

Performance tests with load testing toolhttps://github.com/rabbitmq/rabbitmq-perf-test on test-machine:

MacBook Pro (15-inch, 2016)Processor 2,6 GHz Intel Core i7Memory 16 GB 2133 MHz LPDDR3

Persistent messages

./bin/runjava com.rabbitmq.perf.PerfTest --exchangetest -uri amqp://guest:guest@localhost:5672 --queuetest --consumers 10 --producers 5 --qos 100 -flag persistent......id: test-235131-686, sending rate avg: 53577 msg/sid: test-235131-686, receiving rate avg: 51941 msg/s

Transient messages

./bin/runjava com.rabbitmq.perf.PerfTest --exchangetest -uri amqp://guest:guest@localhost:5672 --queuetest --consumers 10 --producers 5 --qos 100......id: test-235231-085, sending rate avg: 71247 msg/sid: test-235231-085, receiving rate avg: 69009 msg/s

Internals

Backend for durable entities

Database backend is changeable through configdb.engine

db:  defaultPath: db  engine: badger
db:  defaultPath: db  engine: buntdb

QOS

basic.qos method implemented for standard AMQP and RabbitMQ mode. It means that by default qos applies for connection(global=true) or channel(global=false).RabbitMQ Qos means for channel(global=true) or each new consumer(global=false).

Admin server

The administration server is available at standard:15672 port and isread only mode at the moment. Main page above, andmore screenshots at /readme folder

Overview

TODO

  • Optimize binds
  • Replication and clusterization
  • Own backend for durable entities and persistent messages
  • Migrate to message reference counting

Contribution

Contribution of any kind is always welcome and appreciated. Contribution Guidelines in WIP

Releases

No releases published

Packages

No packages published

Languages


[8]ページ先頭

©2009-2025 Movatter.jp