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
...
# 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.
# 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.