mirror of
				https://github.com/SourceFellows/gobuch.git
				synced 2025-11-04 15:46:17 +01:00 
			
		
		
		
	initial import
This commit is contained in:
		
							
								
								
									
										13
									
								
								cloud-provider/docker-compose/Dockerfile.receiver
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								cloud-provider/docker-compose/Dockerfile.receiver
									
									
									
									
									
										Normal 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"]
 | 
			
		||||
							
								
								
									
										13
									
								
								cloud-provider/docker-compose/Dockerfile.sender
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								cloud-provider/docker-compose/Dockerfile.sender
									
									
									
									
									
										Normal 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"]
 | 
			
		||||
							
								
								
									
										70
									
								
								cloud-provider/docker-compose/cmd/receiver/main.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								cloud-provider/docker-compose/cmd/receiver/main.go
									
									
									
									
									
										Normal 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()
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										44
									
								
								cloud-provider/docker-compose/cmd/sender/main.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								cloud-provider/docker-compose/cmd/sender/main.go
									
									
									
									
									
										Normal 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)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										16
									
								
								cloud-provider/docker-compose/docker-compose.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								cloud-provider/docker-compose/docker-compose.yml
									
									
									
									
									
										Normal 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
 | 
			
		||||
							
								
								
									
										5
									
								
								cloud-provider/docker-compose/go.mod
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								cloud-provider/docker-compose/go.mod
									
									
									
									
									
										Normal 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
 | 
			
		||||
							
								
								
									
										17
									
								
								cloud-provider/docker-compose/go.sum
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								cloud-provider/docker-compose/go.sum
									
									
									
									
									
										Normal 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=
 | 
			
		||||
		Reference in New Issue
	
	Block a user