• Stars
    star
    236
  • Rank 170,480 (Top 4 %)
  • Language
    Go
  • Created over 12 years ago
  • Updated over 11 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

a Go package to observe notable events in a decoupled fashion

go-notify

Package notify enables independent components of an application to observe notable events in a decoupled fashion.

It generalizes the pattern of multiple consumers of an event (ie: the same message delivered to multiple channels) and obviates the need for components to have intimate knowledge of each other (only import notify and the name of the event are shared).

Example:

// producer of "my_event"
go func() {
    for {
        time.Sleep(time.Duration(1) * time.Second):
        notify.Post("my_event", time.Now().Unix())
    }
}()

// observer of "my_event" (normally some independent component that
// needs to be notified when "my_event" occurs)
myEventChan := make(chan interface{})
notify.Start("my_event", myEventChan)
go func() {
    for {
        data := <-myEventChan
        log.Printf("MY_EVENT: %#v", data)
    }
}()

Functions

func Post(event string, data interface{}) error
    Post a notification (arbitrary data) to the specified event

func PostTimeout(event string, data interface{}, timeout time.Duration) error
    Post a notification to the specified event using the provided timeout for
    any output channels that are blocking

func Start(event string, outputChan chan interface{})
    Start observing the specified event via provided output channel

func Stop(event string, outputChan chan interface{}) error
    Stop observing the specified event on the provided output channel

func StopAll(event string) error
    Stop observing the specified event on all channels

func Version() string
    returns the current version

More Repositories

1

oauth2_proxy

A reverse proxy that provides authentication with Google, Github or other provider
Go
5,103
star
2

go-simplejson

a Go package to interact with arbitrary JSON
Go
3,719
star
3

data_hacks

Command line utilities for data analysis
Python
1,937
star
4

dablooms

scaling, counting, bloom filter library
C
965
star
5

asyncmongo

An asynchronous library for accessing mongo with tornado.ioloop
Python
611
star
6

statsdaemon

an implementation of Etsy's statsd in Go
Go
570
star
7

simplehttp

a family of libraries and daemons for building scalable web infrastructure
C
539
star
8

go-hostpool

Intelligently and flexibly pool among multiple hosts from your Go application
Go
377
star
9

bitly-api-python

python library to the bitly api
Python
244
star
10

forgettable

Various implementations of the forget table: a distributional database that forgets data
Go
201
star
11

file2http

spray a line-oriented file at an HTTP endpoint
Go
84
star
12

pyqrencode

python bindings for libqrencode
C
67
star
13

asyncdynamo

async Amazon DynamoDB library for Tornado
Python
60
star
14

ngx_http_full_request_log

nginx module to log a full request
C
32
star
15

bitly_chrome_extension

bit.ly chrome extension
JavaScript
27
star
16

little_bigtable

Little Bigtable is an emulator for Google Bigtable w/ persistence in sqlite3
Go
21
star
17

timer_metrics

TimerMetrics captures timings and enables periodic metrics every n events
Go
15
star
18

assetman

Assetman burns countless cycles and makes your deploys take forever
Python
14
star
19

doozer-c

async C client library for doozerd
C
10
star
20

bitly_ios_sdk_release

Bitly SDK for iOS
7
star
21

tsplot

Go
1
star
22

sprinterns2022

Python
1
star
23

winterns2021

Python
1
star