59 dépôts
Libraries and servers for implementing message queues, event buses, and real-time communication.
Explore 59 awesome GitHub repositories matching part of an awesome list · Messaging Systems. Refine with filters or upvote what's useful.
Asynq is a distributed background job processing framework for Go applications. It manages asynchronous task queues by offloading heavy operations to persistent storage, allowing the main application to remain responsive while background workers handle workloads. The system utilizes Redis to manage task state, concurrency, and message distribution across multiple worker instances. It employs atomic Lua scripting and sorted sets to ensure reliable job acquisition, precise scheduling of delayed tasks, and fault-tolerant processing through a two-stage acknowledgement flow. The framework support
Distributed task queue built on top of Redis.
Sarama is a Go client library for producing and consuming messages from Apache Kafka clusters. It provides dedicated interfaces for a message producer to send typed data packets and a message consumer to read and process continuous data streams from Kafka topics. The library includes a mocking framework and simulation layer that mimics Kafka broker behavior. These tools allow for the testing of client applications and messaging logic without requiring a live cluster. The project handles cluster connectivity and integration through the implementation of the Kafka binary protocol over TCP. It
Library for interacting with Apache Kafka.
Centrifugo is a self-hosted real-time messaging server that provides infrastructure for scalable notifications, a publish-subscribe message broker, and a language-agnostic WebSocket gateway. It allows for the delivery of instant messages and data streams to concurrent users via WebSockets and Server-Sent Events. The system functions as a communication layer that separates network transport from backend business logic. It supports distributed messaging clusters using Redis for coordination of presence and message delivery across multiple server nodes. The project covers channel subscription m
Real-time messaging server supporting WebSockets and SockJS.
Watermill is a Go library for building event-driven applications. It provides a framework for implementing event-driven architectures through a consistent interface for message publishing and subscribing, featuring a pub/sub message router and event stream processing pipelines. The library uses interface-based abstractions to decouple message producers and consumers from the underlying message broker. This allows different messaging technologies to be swapped via plugin-based broker integration. It employs a router-driven dispatch system and middleware-based pipelines to manage cross-cutting
Toolkit for building event-driven applications and streams.
Gorush is a dedicated notification dispatch server used to send real-time alerts to iOS and Android mobile devices. It functions as a centralized infrastructure for hosting a notification API and managing the delivery of push messages through high-throughput queuing. The system supports both gRPC streams and HTTP endpoints to receive notification triggers and includes a command-line interface for triggering alerts without a running server process. It manages network traffic through proxy routing via HTTP or SOCKS5 and secures server communication using automated TLS certificate management. O
Push notification server supporting multiple providers.
Machinery is a distributed task queue and asynchronous workflow engine. It provides a system for processing heavy workloads outside the main request flow using a network of distributed background workers and a message-based job orchestrator. The project manages complex task lifecycles through sequential chaining, where results are passed between tasks, and parallel coordination, which can trigger callback tasks upon the completion of a group. It supports periodic workflow scheduling for recurring jobs and delayed execution via specific timestamps. The system includes capabilities for result
Asynchronous task queue based on distributed message passing.
This is a Golang client library for interacting with a cloud native distributed messaging system. It provides the necessary tools for Go applications to exchange messages using publish-subscribe and request-reply patterns, as well as specialized clients for managing persistent streams and distributed storage. The library includes a JetStream client for durable message streaming and replay, a Key-Value store client for managing distributed state with versioning and watchers, and an Object Store client for the storage and retrieval of large binary files via chunked delivery. The implementation
Official client for the NATS messaging system.
Mercure est un courtier de messages basé sur HTTP et un serveur pub/sub en temps réel qui route les mises à jour de données asynchrones vers des abonnés autorisés. Il fonctionne comme un hub centralisé qui reçoit des données via des requêtes HTTP standard et les diffuse aux clients web en utilisant le protocole Server-Sent Events. Le projet se distingue en remplaçant les WebSockets par une connexion HTTP unidirectionnelle, tirant parti de HTTP/2 et HTTP/3 pour une livraison multiplexée à faible latence. Il implémente une couche de contrôle d'accès sécurisée utilisant JSON Web Tokens (JWT) et JSON Web Signatures (JWS) pour valider l'identité des éditeurs et des abonnés, et prend en charge le chiffrement de bout en bout des charges utiles via JSON Web Encryption (JWE). Le système couvre le clustering haute disponibilité et la mise à l'échelle horizontale pour les architectures pilotées par les événements, y compris la récupération de l'historique des événements pour réconcilier les mises à jour manquées après les déconnexions des clients. Sa surface opérationnelle inclut la surveillance des performances, le suivi de la présence des clients et la limitation des requêtes (throttling). Le hub peut être déployé en tant que binaire auto-hébergé, au sein d'environnements conteneurisés comme Kubernetes, ou via un service de provisionnement géré.
Server and library for dispatching updates via Mercure.
Il s'agit d'une bibliothèque cliente en Go pour Apache Kafka, fournissant les outils nécessaires pour produire et consommer des messages depuis des brokers Kafka. Elle sert d'implémentation client Kafka pour construire des applications s'intégrant à Kafka pour le streaming de données en temps réel et la messagerie. La bibliothèque inclut la prise en charge de modules cryptographiques validés pour garantir que les connexions réseau respectent les normes fédérales de sécurité et de chiffrement pour la conformité FIPS. Le client offre des capacités de production de messages asynchrones avec rapports de livraison et de consommation de messages via des groupes de consommateurs équilibrés et des abonnements par regex sur plusieurs topics.
Official client for Apache Kafka and Confluent Platform.
Melody is a WebSocket server framework designed to upgrade HTTP connections into bidirectional streams. It functions as a session manager and binary streaming library that facilitates real-time data exchange between a server and multiple remote clients. The project features a broadcast engine that optimizes multi-client transmissions through wire-representation caching. It includes a dedicated session management system for attaching custom state to persistent network connections and an upgrade handler that validates handshake headers. The framework covers broad capability areas including eve
Minimalist framework for WebSocket sessions.
⚡ HTTP/2 Apple Push Notification Service (APNs) push provider for Go — Send push notifications to iOS, tvOS, Safari and OSX apps, using the APNs HTTP/2 protocol.
HTTP/2 provider for Apple Push Notifications.
The official Go package for NSQ
Official package for the NSQ messaging system.
Golang push server cluster
Cluster-based push notification server.
An AMQP 0-9-1 Go client maintained by the RabbitMQ team. Originally by @streadway: streadway/amqp
Official client library for RabbitMQ.
Go Lightweight eventbus with async compatibility for Go
Lightweight event bus with asynchronous support.
💨 A real time messaging system to build a scalable in-app notifications, multiplayer games, chat apps in web and mobile apps.
Real-time messaging server for notifications and chat.
Uniqush is a free and open source software system which provides a unified push service for server side notification to apps on mobile devices.
Redis-backed unified push service for mobile devices.
Chanify is a safe and simple notification tools. This repository is command line tools for Chanify.
Push notification server for iOS devices.
A Go interface to ZeroMQ version 4
Go interface for ZeroMQ.
Native Go bindings for D-Bus
Native bindings for D-Bus communication.