Skip to content

rafaeljesus/kafka-event-bus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Event Bus Kafka

  • A tiny wrapper around sarama topic and consumer.

Installation

go get -u https://github.com/rafaeljesus/kafka-event-bus

Environment Variables

export KAFKA_URL=localhost:9093

Usage

The kafka-event-bus package exposes a interface for emitting and listening events.

Emitter

import "github.com/rafaeljesus/kafka-event-bus"

topic := "events"
var event struct{}
eventBus, _ := eventbus.NewEventBus()

e := event{}
if err := eventBus.Emit(topic, &e); err != nil {
  // handle failure to emit message
}

Listener

import "github.com/rafaeljesus/kafka-event-bus"

topic := "events"
metricsChannel := "metrics"
notificationsChannel := "notifications"
eventBus, _ := eventbus.NewEventBus()

if err := eventBus.On(topic, metricsHandler); err != nil {
  // handle failure to listen a message
}

if err := eventBus.On(topic, notificationsHandler); err != nil {
  // handle failure to listen a message
}

func metricsHandler(payload []byte) (error) {
  e := event{}
  if err := json.Unmarshal(payload, &e); err != nil {
    // handle failure
  }
  // handle message
  return nil
}

func notificationsHandler(payload []byte) (interface{}, error) {
  e := event{}
  if err := json.Unmarshal(payload, &e); err != nil {
    // handle failure
  }
  // handle message
  return nil
}

Contributing

  • Fork it
  • Create your feature branch (git checkout -b my-new-feature)
  • Commit your changes (git commit -am 'Add some feature')
  • Push to the branch (git push origin my-new-feature)
  • Create new Pull Request

Badges

Go Report Card


GitHub @rafaeljesus  ·  Medium @_jesus_rafael  ·  Twitter @_jesus_rafael

Releases

No releases published

Packages

No packages published

Languages