bloomberg/blazingmq

C++bloomberg.github.io/blazingmq/

A modern high-performance open source message queuing system

distributed-systemsmessage-queuemessagingmiddlewarequeuequeuesblazingmq
Crecimiento de estrellas
Estrellas
3.2k
Forks
194
Crecimiento semanal
+5
Issues
35
2.5k3k
jul 2023jul 2024ago 2025sept 2026
README


OS Linux OS Solaris License C++ CMake MessageQueue Documentation

BlazingMQ - A Modern, High-Performance Message Queue

BlazingMQ is an open source distributed message queueing framework, which focuses on efficiency, reliability, and a rich feature set for modern-day workflows.

At its core, BlazingMQ provides durable, fault-tolerant, highly performant, and highly available queues, along with features like various message routing strategies (e.g., work queues, priority, fan-out, broadcast, etc.), compression, strong consistency, poison pill detection, etc.

Message queues generally provide a loosely-coupled, asynchronous communication channel ("queue") between application services (producers and consumers) that send messages to one another. You can think about it like a mailbox for communication between application programs, where 'producer' drops a message in a mailbox and 'consumer' picks it up at its own leisure. Messages placed into the queue are stored until the recipient retrieves and processes them. In other words, producer and consumer applications can temporally and spatially isolate themselves from each other by using a message queue to facilitate communication.

BlazingMQ's back-end (message brokers) has been implemented in C++, and client libraries are available in C++, Java, and Python.

BlazingMQ is an actively developed project and has been battle-tested in production at Bloomberg for 8+ years.

This repository the contains BlazingMQ message broker, the BlazingMQ C++ client library, and a BlazingMQ command line tool. The BlazingMQ Java client library and Python client library are maintained in separate repositories.

Documentation

Comprehensive documentation about BlazingMQ can be found here.

Quick Start

This article guides readers to build, install, and experiment with BlazingMQ locally in a Docker container.

In the companion article, readers can learn about some intermediate and advanced features of BlazingMQ and see them in action.

Building

bin/build-ubuntu.sh and bin/build-darwin.sh build BlazingMQ and its dependencies, respectively, on Ubuntu 22.04.2 LTS and Darwin 22.6.0. They can serve as a basis to build BlazingMQ on other systems.

To build BlazingMQ with plugins, pass '--plugins' argument with desired plugin names to the build script, e.g.

bin/build-ubuntu.sh --plugins plugin-1-name,plugin-2-name

With vcpkg

There is also support for building BlazingMQ with vpckg.

Before attempting to build, you will have to acquire flex, bison, and bde-tools for your system, as vcpkg cannot fetch them. Both flex and bison can likely be installed through your system's package manager. Clone bde-tools, we'll assume blazingmq/thirdparty/bde-tools for this guide.

Once the prerequisite tools are installed, you should be able to build BlazingMQ with the following:

export VCPKG_ROOT=/path/to/vcpkg
cmake --preset [preset-name] -DCMAKE_PREFIX_PATH=/path/to/thirdparty/bde-tools
cmake --build cmake.bld

For a list of presets, please look at the *-vcpkg configurations in CMakePresets.json.

Installation

This article describes the steps for installing a BlazingMQ cluster in a set of Docker containers, along with a recommended set of configurations.

Contributions

We welcome your contributions to help us improve and extend this project!

We welcome issue reports here; be sure to choose the proper issue template for your issue, so that we can be sure you're providing us with the necessary information.

Before sending a Pull Request, please make sure you have read our Contribution Guidelines.

License

BlazingMQ is Apache 2.0 licensed, as found in the LICENSE file.

Code of Conduct

This project has adopted a Code of Conduct. If you have any concerns about the Code, or behavior which you have experienced in the project, please contact us at opensource@bloomberg.net.

Security Vulnerability Reporting

If you believe you have identified a security vulnerability in this project, please send an email to the project team at opensource@bloomberg.net, detailing the suspected issue and any methods you've found to reproduce it.

Please do NOT open an issue in the GitHub repository, as we'd prefer to keep vulnerability reports private until we've had an opportunity to review and address them.

Repositorios relacionados
doocs/advanced-java

😮 Core Interview Questions & Answers For Experienced Java(Backend) Developers | 互联网 Java 工程师进阶知识完全扫盲:涵盖高并发、分布式、高可用、微服务、海量数据处理等领域知识

JavaMavenCreative Commons Attribution Share Alike 4.0 Internationaljavadistributed-systems
java.doocs.org
79.1k19.2k
redis/redis

For developers, who are building real-time data-driven applications, Redis is the preferred, fastest, and most feature-rich cache, data structure server, and document and vector query engine.

COtherdatabasekey-value
redis.io
76.3k24.8k
binhnguyennus/awesome-scalability

The Patterns of Scalable, Reliable, and Performant Large-Scale Systems

awesomeMIT Licensesystem-designbackend
73.8k7.1k
etcd-io/etcd

Distributed reliable key-value store for the most critical data of a distributed system

GoGo ModulesApache License 2.0etcdraft
etcd.io
52.2k10.5k
karanpratapsingh/system-design

Learn how to design systems at scale and prepare for system design interviews

interviewOtherarchitecturedistributed-systems
leanpub.com/systemdesign
46k6k
apache/dubbo

The java implementation of Apache Dubbo. An RPC and microservice framework.

JavaMavenlibraryApache License 2.0dubbodistributed-systems
dubbo.apache.org
41.6k26.4k
ashishps1/awesome-system-design-resources

Learn System Design concepts and prepare for interviews using free resources.

JavaMaveninterviewGNU General Public License v3.0awesomebackend
algomaster.io
41.3k8.7k
spacedriveapp/spacedrive

Spacedrive is an open source cross-platform file explorer, powered by a virtual distributed filesystem written in Rust.

Rustcrates.ioappOtherfile-managerdistributed-systems
spacedrive.com
38.9k1.3k
seaweedfs/seaweedfs

SeaweedFS is a distributed storage system for object storage (S3), file systems, and Iceberg tables, designed to handle billions of files with O(1) disk access and effortless horizontal scaling.

GoGo ModulesApache License 2.0distributed-storagedistributed-systems
seaweedfs.com
34.5k3k
anoma/anoma

Reference implementation of Anoma

ElixirMIT Licensecryptographyblockchain
anoma.net
33.6k4.1k
conductor-oss/conductor

Conductor is an event driven agentic workflow engine providing durable and highly resilient execution engine for applications and AI Agents

JavaMavenApache License 2.0distributed-systemsgrpc
docs.conductor-oss.org
32.2k1k
dmlc/xgboost

Scalable, Portable and Distributed Gradient Boosting (GBDT, GBRT or GBM) Library, for Python, R, Java, Scala, C and more. Runs on single machine, Hadoop, Spark, Dask, Flink and DataFlow

C++Apache License 2.0gbdtgbrt
xgboost.readthedocs.io
28.7k8.9k