diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/payload-processor/cmd/BUILD.bazel | 53 | ||||
| -rw-r--r-- | src/payload-processor/cmd/main.go | 43 | ||||
| -rw-r--r-- | src/payload-processor/processor/BUILD.bazel | 9 | ||||
| -rw-r--r-- | src/payload-processor/processor/processor.go | 39 | ||||
| -rw-r--r-- | src/rest-api/cmd/main.go | 8 | ||||
| -rw-r--r-- | src/rest-api/handler/handler.go | 2 |
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)) |