Categorygithub.com/veritone/go-messaging-lib
modulepackage
2.1.0+incompatible
Repository: https://github.com/veritone/go-messaging-lib.git
Documentation: pkg.go.dev

# README

go-messaging-lib

Overview

This project provides simple interfaces to interact with Veritone's core eventing system. There are two main patterns currently supported by this library:

  • Pub-Sub
  • Streaming

Depending on the underlying eventing system, user should use the corresponding package to initialize the its client. The supported systems are Kafka and NSQ.

Goals

  • Offers simple setup and just work out of the box.
  • Provides consistent interfaces that should work for various eventing systems (Kafka, RabbitMQ, NSQ, etc.), thus preventing major breaking changes.
  • Provides multiple examples to jump start.
  • Handles edge cases and difficult technical requirements behind the scene.
  • Exposes monitoring statistics with prometheus.

Usage

Please see the instructions

Basic Operations:

Create Producer

message, err := json.Marshal(data)
if err != nil {
    // handle error
}
producer := Producer(topic, kafka.StrategyRoundRobin, "localhost:9092")
msg, err := NewMessage("hash_key", message)
if err != nil {
    // handle error
}
err = producer.Produce(context.TODO(), msg)
if err != nil {
    // handle error
}
err = producer.Close()
if err != nil {
    // handle error
}

Create Consumer

consumer, err = kafka.Consumer("topic_name", "consumer_group_name", "localhost:9092")
if err != nil {
    // handle error
}
queue, err = consumer.Consume(context.TODO(), kafka.ConsumerGroupOption)
if err != nil {
    // handle error
}
for item := range queue {
    log.Printf("Received: (%s) (%#v) (%T)\n", item.Payload(), item.Metadata(), item.Raw())
}

Notes

This repo is still a WIP. It's not yet suitable for production use.

Mock

This package includes mocks of all its interface types (in package mocks) that is useful for testing. Please update it after changing any of the interfaces.

Mockery - A mock code autogenerator for golang

mockery -name=Manager
mockery -name=Producer
...

# Packages

No description provided by the author
No description provided by the author
Code generated by mockery v1.0.0.
No description provided by the author

# Functions

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Constants

JaegerAgentHostPort point to the agent deployed with sidecar pattern Deployment should use the default port.

# Structs

No description provided by the author

# Interfaces

Consumer defines functions of a consumer/subscriber.
No description provided by the author
Manager provides basic administrative functions for the messaging system.
Messager defines a contract for creating a compatible message type.
OptionCreator defines a contract for making metadata/options for consumer.
Producer defines functions of a producer/publisher.
StreamReader reads stuff from a stream.
StreamWriter writes things to a stream.