Skip to content
Snippets Groups Projects

cloudevent-provider

Get started

Add the module as dependency using go mod:

go get gitlab.eclipse.org/eclipse/xfsc/libraries/messaging/cloudeventprovider

And import the module in your code:

import "gitlab.eclipse.org/eclipse/xfsc/libraries/messaging/cloudeventprovider"

Configure protocol and corresponding config with yaml File

messaging:
  protocol: nats
  nats:
    url: http://localhost:4222
    queueGroup: logger #optional
    timeoutInSec: 10 #optional

Send an Cloudevent

type message struct {
    Receiver string `json:"receiver"`
    Text string `json:"text"`
}

func main() {
    topic := "events"
    c, err := cloudeventprovider.NewClient(cloudeventprovider.Pub, topic)
    if err != nil {
        log.Fatal(err)
    }
    defer c.Close()

    pubMessage := message{
        Receiver: "Timo",
        Text:     "Hello, my friend",
    }

    data, err := json.Marshal(pubMessage)
    if err != nil {
        log.Fatal(err)
    }
    event, err := cloudeventprovider.CreateEvent("example/uri", "example.type", data)
    if err != nil {
        log.Fatal(err)
    }

    if err := c.Pub(event); err != nil {
        log.Fatalf("failed to send, %v", err)
    }
}

Receive an Cloudevent

func receive(event event.Event) {
    fmt.Printf("%s", event)
}

func main() {
    topic := "events"
    client, err := cloudeventprovider.NewClient(cloudeventprovider.Sub, topic)
    if err != nil {
        log.Fatal(err)
    }
    defer client.Close()
    
    log.Fatal(client.Sub(receive))
}

Supported protocols

  • Nats
  • NatsJetstream
  • Kafka
  • Http
  • Mqtt
  • Amqp