initial import

This commit is contained in:
SourceFellows
2020-08-21 06:26:40 +02:00
commit e223458dd4
423 changed files with 9871 additions and 0 deletions

View File

@ -0,0 +1,13 @@
FROM golang:1 as builder
WORKDIR /go/src/app
COPY go.* ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 go build -o app ./cmd/receiver
FROM alpine:latest
COPY --from=builder /go/src/app .
CMD ["./app"]

View File

@ -0,0 +1,13 @@
FROM golang:1 as builder
WORKDIR /go/src/app
COPY go.* ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 go build -o app ./cmd/sender
FROM alpine:latest
COPY --from=builder /go/src/app .
CMD ["./app"]

View File

@ -0,0 +1,70 @@
package main
import (
"context"
"log"
"os"
"sync"
"time"
"github.com/nats-io/nats.go"
)
type Message struct {
Text string
}
func connectNATS(ctx context.Context, url string) (*nats.Conn, error) {
var err error
for {
select {
case <-ctx.Done():
return nil, err
default:
var nc *nats.Conn
nc, err = nats.Connect(url)
if err == nil {
return nc, err
}
}
}
}
func main() {
url := nats.DefaultURL
if v, ok := os.LookupEnv("NATS_URL"); ok {
url = v
}
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
nc, err := connectNATS(ctx, url)
if err != nil {
log.Fatalf("Could not connect to server because of %v", err)
}
defer nc.Close()
log.Println("successfully connected to NATS server")
c, _ := nats.NewEncodedConn(nc, nats.JSON_ENCODER)
defer c.Close()
wg := sync.WaitGroup{}
wg.Add(1)
sub, err := c.Subscribe("testing", func(message *Message) {
log.Printf("neue Nachricht %+v", message)
})
if err != nil {
log.Fatalf("Could not subscribe because of %v", err)
}
log.Printf("Warte auf Nachrichten")
wg.Wait()
sub.Unsubscribe()
sub.Drain()
}

View File

@ -0,0 +1,44 @@
package main
import (
"log"
"os"
"time"
"github.com/nats-io/nats.go"
)
type Message struct {
Text string
}
func sendMessage(url string) error {
nc, err := nats.Connect(url)
if err != nil {
return err
}
defer nc.Close()
c, _ := nats.NewEncodedConn(nc, nats.JSON_ENCODER)
defer c.Close()
return c.Publish("testing", &Message{"Hello World"})
}
func main() {
url := nats.DefaultURL
if v, ok := os.LookupEnv("NATS_URL"); ok {
url = v
}
for {
err := sendMessage(url)
if err != nil {
log.Println(err)
} else {
log.Println("Nachricht versendet")
}
time.Sleep(4 * time.Second)
}
}

View File

@ -0,0 +1,16 @@
version: '3'
services:
sender-application:
build:
context: .
dockerfile: Dockerfile.sender
environment:
NATS_URL: "nats://nats-server:4222"
receiver-application:
build:
context: .
dockerfile: Dockerfile.receiver
environment:
NATS_URL: "nats://nats-server:4222"
nats-server:
image: nats

View File

@ -0,0 +1,5 @@
module golang.source-fellows.com/samples/cloud/dockercompose
go 1.14
require github.com/nats-io/nats.go v1.10.0 // indirect

View File

@ -0,0 +1,17 @@
github.com/nats-io/jwt v0.3.2 h1:+RB5hMpXUUA2dfxuhBTEkMOrYmM+gKIZYS1KjSostMI=
github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU=
github.com/nats-io/nats.go v1.10.0 h1:L8qnKaofSfNFbXg0C5F71LdjPRnmQwSsA4ukmkt1TvY=
github.com/nats-io/nats.go v1.10.0/go.mod h1:AjGArbfyR50+afOUotNX2Xs5SYHf+CoOa5HH1eEl2HE=
github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w=
github.com/nats-io/nkeys v0.1.4 h1:aEsHIssIk6ETN5m2/MD8Y4B2X7FfXrBAUdkyRvbVYzA=
github.com/nats-io/nkeys v0.1.4/go.mod h1:XdZpAbhgyyODYqjTawOnIOI7VlbKSarI9Gfy1tqEu/s=
github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw=
github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59 h1:3zb4D3T4G8jdExgVU/95+vQXfpEPiMdCaZgmGVxjNHM=
golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=