about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/payload-processor/cmd/BUILD.bazel53
-rw-r--r--src/payload-processor/cmd/main.go43
-rw-r--r--src/payload-processor/processor/BUILD.bazel9
-rw-r--r--src/payload-processor/processor/processor.go39
-rw-r--r--src/rest-api/cmd/main.go8
-rw-r--r--src/rest-api/handler/handler.go2
6 files changed, 149 insertions, 5 deletions
diff --git a/src/payload-processor/cmd/BUILD.bazel b/src/payload-processor/cmd/BUILD.bazel
new file mode 100644
index 0000000..515c17e
--- /dev/null
+++ b/src/payload-processor/cmd/BUILD.bazel
@@ -0,0 +1,53 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_cross_binary", "go_library")
+load("@rules_oci//oci:defs.bzl", "oci_image", "oci_push", "oci_tarball")
+load("@rules_pkg//:pkg.bzl", "pkg_tar")
+
+go_library(
+    name = "cmd_lib",
+    srcs = ["main.go"],
+    importpath = "github.com/Baitinq/fs-tracer-backend/src/payload-processor/cmd",
+    visibility = ["//visibility:private"],
+    deps = [
+        "//src/payload-processor/processor",
+        "@com_github_rabbitmq_amqp091_go//:amqp091-go",
+    ],
+)
+
+go_cross_binary(
+    name = "cmd_arm64",
+    platform = "@io_bazel_rules_go//go/toolchain:linux_arm64",
+    target = ":cmd",
+    visibility = ["//visibility:public"],
+)
+
+pkg_tar(
+    name = "tar",
+    srcs = [":cmd_arm64"],
+)
+
+oci_image(
+    name = "image",
+    base = "@distroless_base",
+    entrypoint = ["/cmd_arm64"],
+    # architecture = "arm64",
+    # os = "linux",
+    tars = [":tar"],
+)
+
+oci_tarball(
+    name = "tarball",
+    image = ":image",
+    repo_tags = [],
+)
+
+oci_push(
+    name = "push",
+    image = ":image",
+    repository = "docker.io/baitinq/fs-tracer",
+)
+
+go_binary(
+    name = "cmd",
+    embed = [":cmd_lib"],
+    visibility = ["//visibility:public"],
+)
diff --git a/src/payload-processor/cmd/main.go b/src/payload-processor/cmd/main.go
new file mode 100644
index 0000000..1c9bfcb
--- /dev/null
+++ b/src/payload-processor/cmd/main.go
@@ -0,0 +1,43 @@
+package main
+
+import (
+	"fmt"
+	"log"
+	"os"
+
+	"github.com/Baitinq/fs-tracer-backend/src/payload-processor/processor"
+	amqp "github.com/rabbitmq/amqp091-go"
+)
+
+func main() {
+	rabbitmq_password, ok := os.LookupEnv("RABBITMQ_PASSWORD")
+	if !ok {
+		log.Fatal("RABBITMQ_PASSWORD not set")
+	}
+	log.Println("RabbitMQ password", rabbitmq_password)
+	conn, err := amqp.Dial(fmt.Sprintf("amqp://user:%s@rabbitmq:5672/", rabbitmq_password))
+	if err != nil {
+		log.Fatal(err)
+	}
+	defer conn.Close()
+
+	ch, err := conn.Channel()
+	if err != nil {
+		log.Fatal(err)
+	}
+	defer ch.Close()
+
+	q, err := ch.QueueDeclare(
+		"hello", // name
+		false,   // durable
+		false,   // delete when unused
+		false,   // exclusive
+		false,   // no-wait
+		nil,     // arguments
+	)
+	if err != nil {
+		log.Fatal(err)
+	}
+	processor := processor.NewProcessor(ch, q.Name)
+	processor.ProcessMessages()
+}
diff --git a/src/payload-processor/processor/BUILD.bazel b/src/payload-processor/processor/BUILD.bazel
new file mode 100644
index 0000000..64e3ac2
--- /dev/null
+++ b/src/payload-processor/processor/BUILD.bazel
@@ -0,0 +1,9 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_library")
+
+go_library(
+    name = "processor",
+    srcs = ["processor.go"],
+    importpath = "github.com/Baitinq/fs-tracer-backend/src/payload-processor/processor",
+    visibility = ["//visibility:public"],
+    deps = ["@com_github_rabbitmq_amqp091_go//:amqp091-go"],
+)
diff --git a/src/payload-processor/processor/processor.go b/src/payload-processor/processor/processor.go
new file mode 100644
index 0000000..9cd83f9
--- /dev/null
+++ b/src/payload-processor/processor/processor.go
@@ -0,0 +1,39 @@
+package processor
+
+import (
+	"log"
+
+	amqp "github.com/rabbitmq/amqp091-go"
+)
+
+type Processor struct {
+	ch        *amqp.Channel
+	queueName string
+}
+
+func NewProcessor(ch *amqp.Channel, queueName string) *Processor {
+	log.Println("Created processor")
+	return &Processor{
+		ch:        ch,
+		queueName: queueName,
+	}
+}
+
+func (p *Processor) ProcessMessages() {
+	msgs, err := p.ch.Consume(
+		p.queueName, // queue
+		"",          // consumer
+		true,        // auto-ack
+		false,       // exclusive
+		false,       // no-local
+		false,       // no-wait
+		nil,         // args
+	)
+	if err != nil {
+		log.Fatal("Failed to register a consumer:", err)
+	}
+
+	for msg := range msgs {
+		log.Printf("Received a message: %s", msg.Body)
+	}
+}
diff --git a/src/rest-api/cmd/main.go b/src/rest-api/cmd/main.go
index 6740bea..f6d34e0 100644
--- a/src/rest-api/cmd/main.go
+++ b/src/rest-api/cmd/main.go
@@ -13,18 +13,18 @@ import (
 func main() {
 	rabbitmq_password, ok := os.LookupEnv("RABBITMQ_PASSWORD")
 	if !ok {
-		panic("RABBITMQ_PASSWORD not set")
+		log.Fatal("RABBITMQ_PASSWORD not set")
 	}
 	log.Println("RabbitMQ password", rabbitmq_password)
 	conn, err := amqp.Dial(fmt.Sprintf("amqp://user:%s@rabbitmq:5672/", rabbitmq_password))
 	if err != nil {
-		panic(err)
+		log.Fatal(err)
 	}
 	defer conn.Close()
 
 	ch, err := conn.Channel()
 	if err != nil {
-		panic(err)
+		log.Fatal(err)
 	}
 	defer ch.Close()
 
@@ -37,7 +37,7 @@ func main() {
 		nil,     // arguments
 	)
 	if err != nil {
-		panic(err)
+		log.Fatal(err)
 	}
 	handler := handler.NewHandler(ch, q.Name)
 
diff --git a/src/rest-api/handler/handler.go b/src/rest-api/handler/handler.go
index b5c3ae2..c904ff4 100644
--- a/src/rest-api/handler/handler.go
+++ b/src/rest-api/handler/handler.go
@@ -26,7 +26,7 @@ func NewHandler(ch *amqp.Channel, queueName string) *Handler {
 func (h *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
 	bytes, err := io.ReadAll(io.Reader(r.Body))
 	if err != nil {
-		panic(err)
+		log.Fatal(err)
 	}
 
 	body := fmt.Sprint("Hello World!", r.RemoteAddr, string(bytes))