about summary refs log tree commit diff
path: root/src/payload-processor
diff options
context:
space:
mode:
authorBaitinq <[email protected]>2024-05-02 17:35:56 +0200
committerBaitinq <[email protected]>2024-05-02 17:45:48 +0200
commite8c75ec9678459f2a938a4471729526c4d73808c (patch)
treef33a8b9c6dcaf0042d457535bd6ffa14671b4cda /src/payload-processor
parentFix gazelle warning (diff)
downloadfs-tracer-backend-e8c75ec9678459f2a938a4471729526c4d73808c.tar.gz
fs-tracer-backend-e8c75ec9678459f2a938a4471729526c4d73808c.tar.bz2
fs-tracer-backend-e8c75ec9678459f2a938a4471729526c4d73808c.zip
payload-processor: add stub
Diffstat (limited to 'src/payload-processor')
-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
4 files changed, 144 insertions, 0 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)
+	}
+}