emitter - Emits events using Go way, with wildcard, predicates, cancellation possibilities and many other good wins

  •        30

The emitter package implements a channel-based pubsub pattern. The design goals are to use Golang concurrency model instead of flat callbacks and to design a very simple API that is easy to consume.Go has expressive concurrency model but nobody uses it properly for pubsub as far as I can tell (in the year 2015). I implemented my own solution as I could not find any other that meets my expectations. Please, read this article for more information.

https://github.com/olebedev/emitter

Tags
Implementation
License
Platform

   




Related Projects

RocketMQ - Distributed messaging and streaming data platform

  •    Java

Apache RocketMQ is a distributed messaging and streaming platform with low latency, high performance and reliability, trillion-level capacity and flexible scalability.

Pulsar - Distributed pub-sub Messaging System from Yahoo

  •    Java

Pulsar is a distributed pub-sub messaging platform with a very flexible messaging model and an intuitive client API. It is horizontally scalable (Millions of independent topics and millions of messages published per second), Strong ordering and consistency guarantees, Low latency , REST API, Geo Replication and lot more.

Apache Pulsar - Distributed pub-sub messaging platform

  •    Java

Pulsar is a distributed pub-sub messaging platform with a very flexible messaging model and an intuitive client API. It has run in production at Yahoo scale for over 3 years, with millions of messages per second across millions of topics. It is Horizontally scalable, Low latency, High throughput, Multi-tenancy, Geo-replication, Transparent batching of messages, Transparent handling of partitioned topics, REST API for provisioning, admin and stats and lot more.

emitter - High performance, distributed and low latency publish-subscribe platform.

  •    Go

Emitter is a free open source real-time messaging service that connects all devices. This publish-subscribe messaging API is built for speed and security. Emitter is a real-time communication service for connecting online devices. Infrastructure and APIs for IoT, gaming, apps and real-time web. At its core, emitter.io is a distributed, scalable and fault-tolerant publish-subscribe messaging platform based on MQTT protocol and featuring message storage.

Faye - Simple pub/sub messaging for the web

  •    Javascript

Faye is a set of tools for simple publish-subscribe messaging between web clients. It ships with easy-to-use message routing servers for Node.js and Rack applications, and clients that can be used on the server and in the browser. It is based on the Bayeux protocol.


nanoevents - Simple and tiny (119 bytes) event emitter library for JavaScript

  •    Javascript

Simple and tiny event emitter library for JavaScript. Methods on returns unbind function. Call it and this listener will be removed from event.

Apache Apollo - ActiveMQ's next generation of messaging

  •    Java

ActiveMQ Apollo is a faster, more reliable, easier to maintain messaging broker built from the foundations of the original ActiveMQ. It accomplishes this using a radically different threading and message dispatching architecture. Like ActiveMQ, Apollo is a multi-protocol broker and supports STOMP, AMQP, MQTT, Openwire, SSL, and WebSockets.

gnatsd - High-Performance server for NATS, the cloud native messaging system.

  •    Go

NATS Server is a simple, high performance open source messaging system for cloud native applications, IoT messaging, and microservices architectures. It implements a highly scalable and elegant publish-subscribe (pub/sub) distribution model. The performant nature of NATS make it an ideal base for building modern, reliable, scalable cloud native distributed systems.

Luxun - A high-throughput, persistent, distributed, publish-subscribe messaging system based on memo

  •    Java

A high-throughput, persistent, distributed, publish-subscribe messaging system based on memory mapped file and Thrift RPC.

mangos - package mangos is an implementation in pure Go of the SP ("Scalable Protocols") protocols.

  •    Go

package mangos is an implementation in pure Go of the SP ("Scalable Protocols") protocols. This makes heavy use of go channels, internally, but it can operate on systems that lack support for cgo. It has no external dependencies.At present, all of the Req/Rep, Pub/Sub, Pair, Bus, Push/Pull, and Surveyor/Respondent patterns are supported.

golongpoll - golang long polling library

  •    Go

Golang long polling library. Makes web pub-sub easy via an HTTP long-poll server.To use, create a LongpollManager and then use it to publish events and expose an HTTP handler to subscribe to events.

gollum - An n:m message multiplexer written in Go

  •    Go

Gollum is an n:m multiplexer that gathers messages from different sources and broadcasts them to a set of destinations.Gollum originally started as a tool to MUL-tiplex LOG-files (read it backwards to get the name). It quickly evolved to a one-way router for all kinds of messages, not limited to just logs. Gollum is written in Go to make it scalable and easy to extend without the need to use a scripting language.

mist - A distributed, tag-based pub-sub service for modern web applications and container-driven cloud

  •    Go

Mist is a simple pub/sub based on the idea that messages are tagged. To subscribe, a client simply constructs a list of tags that it is interested in, and all messages that are tagged with all of those tags are sent to that client. A client can not only be a subscriber (with multiple active subscriptions), but also a publisher. Clients will receive messages for any tags they are subscribed, except message publish by themselves.

gopush-cluster - Golang push server cluster

  •    Go

gopush-cluster is a go push server cluster.

EventBus - [Go] Lightweight eventbus with async compatibility for Go

  •    Go

Package EventBus is the little and lightweight eventbus with async compatibility for GoLang.After it the package is ready to use.

zmq4 - A Go interface to ZeroMQ version 4

  •    Go

A Go interface to ZeroMQ version 4.This requires ZeroMQ version 4.0.1 or above. To use CURVE security in versions prior to 4.2, ZeroMQ must be installed with libsodium enabled.

go-socket.io - socket.io library for golang, a realtime application framework.

  •    Go

go-socket.io is an implementation of socket.io in golang, which is a realtime application framework.It is compatible with latest implementation of socket.io in node.js, and supports room and namespace.

go-nsq - The official Go package for NSQ

  •    Go

The official Go package for NSQ.See godoc and the main repo apps directory for examples of clients built using this package.