Skip to content

Brokerless messaging. Pub/Sub. Producer/Consumer. Best effort. Pure Go. No C. No CGO. NO libwhatsoever.

Notifications You must be signed in to change notification settings

Banyc/simple-messaging

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Simple Messaging

Simple messaging for pub/sub and producer/consumer. Pure Go!

Usage

Request-Response

Producer:

consumerAddr, err := net.ResolveTCPAddr("tcp", "localhost:8080")
if err != nil {
    panic(err)
}
producer := messaging.NewProducer(consumerAddr)
producer.Start()
defer producer.Close()

producer.EnsureSent([]byte("Hello World!"))

Consumer:

consumerListenAddr, err := net.ResolveTCPAddr("tcp", ":8080")
if err != nil {
    panic(err)
}
consumer := messaging.NewConsumer(consumerListenAddr, 1024)
consumer.Start()
defer consumer.Close()

message := consumer.Receive()

Pub-Sub

Subscriber:

pubAddr, err := net.ResolveTCPAddr("tcp", "localhost:8080")
if err != nil {
    panic(err)
}
sub := messaging.NewSubscriber(pubAddr, 1024)
sub.Start()
defer sub.Close()

message := sub.EnsureReceived()

Publisher:

pubListenAddr, err := net.ResolveTCPAddr("tcp", ":8080")
if err != nil {
    panic(err)
}
pub := messaging.NewPublisher(pubListenAddr)
pub.Start()
defer pub.Close()

pub.Send([]byte("Hello World!"))

TODO

  • Receivers confirm receipt of messages via reply
    • make sure every message is delivered at least once

About

Brokerless messaging. Pub/Sub. Producer/Consumer. Best effort. Pure Go. No C. No CGO. NO libwhatsoever.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages