Skip to content
Snippets Groups Projects
Commit 512e624d authored by Yege1893's avatar Yege1893
Browse files

try 1 nats

parent db9e2c25
No related branches found
No related tags found
1 merge request!4Master
#!/bin/sh #!/bin/sh
# Abort on any error (including if wait-for-it fails). # Abort on any error (including if wait-for-it fails).
set -e set -e
# Wait for DB
if [ -n "$DB_CONNECT" ]; then
/go/src/app/wait-for-it.sh "$DB_CONNECT" -t 20
fi
# Wait for nats # Wait for nats
if [ -n "$NATS_CONNECT" ]; then if [ -n "$NATS_CONNECT" ]; then
/go/src/app/wait-for-it.sh "$DB_CONNECT" -t 20 /go/src/app/wait-for-it.sh "$NATS_CONNECT" -t 20
fi fi
# Run the main container command. # Run the main container command.
exec "$@" exec "$@"
\ No newline at end of file
...@@ -4,6 +4,8 @@ import ( ...@@ -4,6 +4,8 @@ import (
"fmt" "fmt"
"log" "log"
"os" "os"
"sync"
"time"
"github.com/joho/godotenv" "github.com/joho/godotenv"
"github.com/nats-io/nats.go" "github.com/nats-io/nats.go"
...@@ -11,76 +13,69 @@ import ( ...@@ -11,76 +13,69 @@ import (
func main() { func main() {
err := godotenv.Load(".env") err := godotenv.Load(".env")
if err != nil { if err != nil {
log.Fatalf("Error loading .env file") log.Fatalf("Error loading .env file: %v", err)
} }
fmt.Println("aufgerufen") fmt.Println("aufgerufen")
//testemailcontent := model.EmialContenct{Name: "Yannick", Location: "Stuttgart"} time.Sleep(2 * time.Second)
//receiver, body, subject := service.CreateEmail(testemailcontent, "confirmOrder")
//service.SendEmail(receiver, body, subject)
natsUrl := os.Getenv("NATS_URL") natsUrl := os.Getenv("NATS_URL")
if nc, err := nats.Connect(natsUrl); err != nil { nc, err := nats.Connect(natsUrl)
fmt.Println(err, nc) if err != nil {
log.Fatalf("Error connecting to NATS server: %v", err)
} }
defer nc.Close()
var wg sync.WaitGroup
wg.Add(2)
go func() { go func() {
defer wg.Done()
fmt.Println("wird aufgerufen") fmt.Println("wird aufgerufen")
nc, err := nats.Connect(natsUrl) orderSub, err := nc.SubscribeSync("Order")
if err != nil { if err != nil {
log.Fatal(err) log.Fatalf("Error subscribing to 'Order': %v", err)
}
defer nc.Close()
sub, err := nc.SubscribeSync("Order")
if err != nil {
log.Fatal(err)
} }
log.Println("Service hört auf die Subscription:", orderSub.Subject)
log.Println("Service hört auf die Subscription:", sub.Subject)
for { for {
msg, err := sub.NextMsg(0) msg, err := orderSub.NextMsg(-1)
if err != nil { if err != nil {
log.Fatal(err) log.Println("Error receiving message:", err)
continue
}
if msg != nil {
log.Printf("Nachricht erhalten: %s", msg.Data)
msg.Ack()
} }
log.Printf("Nachricht erhalten: %s", msg.Data)
// Führe hier deine spezifische Logik aus, um die Nachricht zu verarbeiten
// Bestätige die Verarbeitung der Nachricht
msg.Ack()
} }
}() }()
go func() { go func() {
nc, err := nats.Connect(natsUrl) defer wg.Done()
if err != nil { cancelationSub, err := nc.SubscribeSync("Cancelation")
log.Fatal(err)
}
defer nc.Close()
sub, err := nc.SubscribeSync("Cancelation")
if err != nil { if err != nil {
log.Fatal(err) log.Fatalf("Error subscribing to 'Cancelation': %v", err)
} }
log.Println("Service hört auf die Subscription:", cancelationSub.Subject)
log.Println("Service hört auf die Subscription:", sub.Subject)
for { for {
msg, err := sub.NextMsg(0) msg, err := cancelationSub.NextMsg(-1)
if err != nil { if err != nil {
log.Fatal(err) log.Println("Error receiving message:", err)
continue
}
if msg != nil {
log.Printf("Nachricht erhalten: %s", msg.Data)
msg.Ack()
} }
log.Printf("Nachricht erhalten: %s", msg.Data)
// Führe hier deine spezifische Logik aus, um die Nachricht zu verarbeiten
// Bestätige die Verarbeitung der Nachricht
msg.Ack()
} }
}() }()
wg.Wait()
fmt.Println("Alle Go-Routinen sind abgeschlossen. Hauptprogramm wird beendet.")
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment