59 repositorios
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 es un broker de mensajes basado en HTTP y servidor pub/sub en tiempo real que enruta actualizaciones de datos asíncronas a suscriptores autorizados. Funciona como un hub centralizado que recibe datos mediante solicitudes HTTP estándar y los transmite a clientes web utilizando el protocolo Server-Sent Events (SSE). El proyecto destaca por reemplazar WebSockets con una conexión HTTP unidireccional, aprovechando HTTP/2 y HTTP/3 para una entrega multiplexada de baja latencia. Implementa una capa de control de acceso seguro utilizando JSON Web Tokens (JWT) y JSON Web Signatures (JWS) para validar la identidad de editores y suscriptores, y soporta cifrado de payload de extremo a extremo mediante JSON Web Encryption (JWE). El sistema cubre clustering de alta disponibilidad y escalado horizontal para arquitecturas basadas en eventos, incluyendo recuperación del historial de eventos para reconciliar actualizaciones perdidas tras desconexiones del cliente. Su superficie operativa incluye monitoreo de rendimiento, seguimiento de presencia de clientes y limitación de solicitudes (throttling). El hub puede desplegarse como un binario autohospedado, dentro de entornos contenedorizados como Kubernetes o mediante un servicio de aprovisionamiento gestionado.
Server and library for dispatching updates via Mercure.
Esta es una librería cliente en lenguaje Go para Apache Kafka, que proporciona las herramientas necesarias para producir y consumir mensajes desde brokers de Kafka. Sirve como una implementación de cliente Kafka para construir aplicaciones que se integran con Kafka para streaming de datos y mensajería en tiempo real. La librería incluye soporte para módulos criptográficos validados para asegurar que las conexiones de red cumplan con los estándares federales de seguridad y cifrado para el cumplimiento de FIPS. El cliente ofrece capacidades para la producción asíncrona de mensajes con informes de entrega y consumo de mensajes mediante grupos de consumidores balanceados y suscripciones por regex en múltiples temas.
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.
Native Go bindings for D-Bus
Native bindings for D-Bus communication.