wip
This commit is contained in:
parent
f2aca73855
commit
cc3cd8cad0
@ -1,19 +0,0 @@
|
|||||||
{
|
|
||||||
"event_id": "99260667-d229-4a24-9c1c-156f8cdc16fb",
|
|
||||||
"event_topic": "barcode.new",
|
|
||||||
"event_sender": "tester",
|
|
||||||
"event_meta": null,
|
|
||||||
"event_data": [
|
|
||||||
57,
|
|
||||||
52,
|
|
||||||
48,
|
|
||||||
49,
|
|
||||||
50,
|
|
||||||
51,
|
|
||||||
52,
|
|
||||||
53,
|
|
||||||
54,
|
|
||||||
55
|
|
||||||
],
|
|
||||||
"event_time": "2024-10-01T15:39:55+00:00"
|
|
||||||
}
|
|
112
bundle/app/app.go
Normal file
112
bundle/app/app.go
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
package app
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"os/signal"
|
||||||
|
"syscall"
|
||||||
|
|
||||||
|
"git.espin.casa/albert/cml04-falcon-system/internal/storage"
|
||||||
|
"git.espin.casa/albert/logger"
|
||||||
|
"github.com/nats-io/nats.go"
|
||||||
|
"github.com/spf13/cobra"
|
||||||
|
)
|
||||||
|
|
||||||
|
func Run(cmd *cobra.Command, args []string) {
|
||||||
|
// read flags
|
||||||
|
logLevel, _ := cmd.Flags().GetString("log-level")
|
||||||
|
userName, _ := cmd.Flags().GetString("db-username")
|
||||||
|
userPass, _ := cmd.Flags().GetString("db-password")
|
||||||
|
dbHost, _ := cmd.Flags().GetString("db-host")
|
||||||
|
dbPort, _ := cmd.Flags().GetInt("db-port")
|
||||||
|
dbName, _ := cmd.Flags().GetString("db-name")
|
||||||
|
natsHost, _ := cmd.Flags().GetString("nats-host")
|
||||||
|
natsPort, _ := cmd.Flags().GetInt("nats-port")
|
||||||
|
// setup logger
|
||||||
|
log := logger.New(os.Stdout, logLevel)
|
||||||
|
// log fields
|
||||||
|
logFields := logger.LogFields{
|
||||||
|
"db_username": userName,
|
||||||
|
"db_password": "*****",
|
||||||
|
"db_host": dbHost,
|
||||||
|
"db_port": dbPort,
|
||||||
|
"db_name": dbName,
|
||||||
|
"nats_host": natsHost,
|
||||||
|
"nats_port": natsPort,
|
||||||
|
"log_level": logLevel,
|
||||||
|
}
|
||||||
|
// create storager
|
||||||
|
storage, err := storage.New(&storage.DBConfig{
|
||||||
|
Username: userName,
|
||||||
|
Password: userPass,
|
||||||
|
Host: dbHost,
|
||||||
|
Port: dbPort,
|
||||||
|
Name: dbName,
|
||||||
|
})
|
||||||
|
// handler error
|
||||||
|
if err != nil {
|
||||||
|
log.Error("create storage failed", err, logFields)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// NATS connect
|
||||||
|
nc, err := nats.Connect(fmt.Sprintf("nats://%s:%d", natsHost, natsPort))
|
||||||
|
if err != nil {
|
||||||
|
log.Error("create nats connection failed", err, logFields)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer nc.Close()
|
||||||
|
// create context
|
||||||
|
ctx, cancel := context.WithCancel(context.Background())
|
||||||
|
defer cancel()
|
||||||
|
// NATS subscribe subject
|
||||||
|
nc.Subscribe("barcode.new", func(msg *nats.Msg) {
|
||||||
|
go func(log logger.LoggerAdapter) {
|
||||||
|
if err := ProcessBarcodeMessage(ctx, msg, storage, log); err != nil {
|
||||||
|
log.Error("process new barcode message failed", err, logger.LogFields{})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}(log)
|
||||||
|
})
|
||||||
|
nc.Subscribe("bundle.new", func(msg *nats.Msg) {
|
||||||
|
go func(log logger.LoggerAdapter) {
|
||||||
|
if err := ProcessBundleMessage(ctx, msg, storage, log); err != nil {
|
||||||
|
log.Error("process new bundle message failed", err, logger.LogFields{})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}(log)
|
||||||
|
})
|
||||||
|
// info banner
|
||||||
|
log.Info("started falcon barcoder service", logFields)
|
||||||
|
// wait signal to finish
|
||||||
|
signal := WaitSignal()
|
||||||
|
log.Info("signal received", logFields.Add(logger.LogFields{
|
||||||
|
"signal": signal,
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
|
||||||
|
func ProcessBarcodeMessage(ctx context.Context, msg *nats.Msg, storage storage.Storager, log logger.LoggerAdapter) error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func ProcessBundleMessage(ctx context.Context, msg *nats.Msg, storage storage.Storager, log logger.LoggerAdapter) error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// WaitSignal catching exit signal
|
||||||
|
func WaitSignal() os.Signal {
|
||||||
|
ch := make(chan os.Signal, 2)
|
||||||
|
signal.Notify(
|
||||||
|
ch,
|
||||||
|
syscall.SIGINT,
|
||||||
|
syscall.SIGQUIT,
|
||||||
|
syscall.SIGTERM,
|
||||||
|
)
|
||||||
|
for {
|
||||||
|
sig := <-ch
|
||||||
|
switch sig {
|
||||||
|
case syscall.SIGINT, syscall.SIGQUIT, syscall.SIGTERM:
|
||||||
|
return sig
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -21,10 +21,10 @@ func init() {
|
|||||||
// flags
|
// flags
|
||||||
barcoderCmd.Flags().String("db-username", "postgres", "database username")
|
barcoderCmd.Flags().String("db-username", "postgres", "database username")
|
||||||
barcoderCmd.Flags().String("db-password", "Me8140@01", "database user password")
|
barcoderCmd.Flags().String("db-password", "Me8140@01", "database user password")
|
||||||
barcoderCmd.Flags().String("db-host", "10.136.49.104", "database host address")
|
barcoderCmd.Flags().String("db-host", "db", "database host address")
|
||||||
barcoderCmd.Flags().Int("db-port", 5432, "database tcp port")
|
barcoderCmd.Flags().Int("db-port", 5432, "database tcp port")
|
||||||
barcoderCmd.Flags().String("db-name", "falcon", "database user password")
|
barcoderCmd.Flags().String("db-name", "falcon", "database user password")
|
||||||
barcoderCmd.Flags().String("nats-host", "10.136.49.95", "nats.io broker host address")
|
barcoderCmd.Flags().String("nats-host", "nats", "nats.io broker host address")
|
||||||
barcoderCmd.Flags().Int("nats-port", 4222, "nats.io broker tcp port")
|
barcoderCmd.Flags().Int("nats-port", 4222, "nats.io broker tcp port")
|
||||||
barcoderCmd.Flags().String("log-level", "debug", "log level trace")
|
barcoderCmd.Flags().String("log-level", "debug", "log level trace")
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright © 2024 NAME HERE <EMAIL ADDRESS>
|
Copyright © 2024 NAME HERE <EMAIL ADDRESS>
|
||||||
|
|
||||||
*/
|
*/
|
||||||
package cmd
|
package cmd
|
||||||
|
|
||||||
@ -13,13 +12,8 @@ import (
|
|||||||
// bundleCmd represents the bundle command
|
// bundleCmd represents the bundle command
|
||||||
var bundleCmd = &cobra.Command{
|
var bundleCmd = &cobra.Command{
|
||||||
Use: "bundle",
|
Use: "bundle",
|
||||||
Short: "A brief description of your command",
|
Short: "bundle service manager.",
|
||||||
Long: `A longer description that spans multiple lines and likely contains examples
|
Long: "",
|
||||||
and usage of using your command. For example:
|
|
||||||
|
|
||||||
Cobra is a CLI library for Go that empowers applications.
|
|
||||||
This application is a tool to generate the needed files
|
|
||||||
to quickly create a Cobra application.`,
|
|
||||||
Run: func(cmd *cobra.Command, args []string) {
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
fmt.Println("bundle called")
|
fmt.Println("bundle called")
|
||||||
},
|
},
|
||||||
@ -28,13 +22,13 @@ to quickly create a Cobra application.`,
|
|||||||
func init() {
|
func init() {
|
||||||
rootCmd.AddCommand(bundleCmd)
|
rootCmd.AddCommand(bundleCmd)
|
||||||
|
|
||||||
// Here you will define your flags and configuration settings.
|
// flags
|
||||||
|
bundleCmd.Flags().String("db-username", "postgres", "database username")
|
||||||
// Cobra supports Persistent Flags which will work for this command
|
bundleCmd.Flags().String("db-password", "Me8140@01", "database user password")
|
||||||
// and all subcommands, e.g.:
|
bundleCmd.Flags().String("db-host", "db", "database host address")
|
||||||
// bundleCmd.PersistentFlags().String("foo", "", "A help for foo")
|
bundleCmd.Flags().Int("db-port", 5432, "database tcp port")
|
||||||
|
bundleCmd.Flags().String("db-name", "falcon", "database user password")
|
||||||
// Cobra supports local flags which will only run when this command
|
bundleCmd.Flags().String("nats-host", "nats", "nats.io broker host address")
|
||||||
// is called directly, e.g.:
|
bundleCmd.Flags().Int("nats-port", 4222, "nats.io broker tcp port")
|
||||||
// bundleCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle")
|
bundleCmd.Flags().String("log-level", "debug", "log level trace")
|
||||||
}
|
}
|
||||||
|
@ -12,7 +12,7 @@ import (
|
|||||||
var handsetCmd = &cobra.Command{
|
var handsetCmd = &cobra.Command{
|
||||||
Use: "handset",
|
Use: "handset",
|
||||||
Short: "Handset service for reading/process barcodes.",
|
Short: "Handset service for reading/process barcodes.",
|
||||||
Long: "Handset service for reading and processing read barcodes from label on bundles.",
|
Long: "Handset service for reading and processing read barcodes from bundle labels.",
|
||||||
Run: app.Run,
|
Run: app.Run,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -20,7 +20,7 @@ func init() {
|
|||||||
rootCmd.AddCommand(handsetCmd)
|
rootCmd.AddCommand(handsetCmd)
|
||||||
|
|
||||||
handsetCmd.Flags().String("http-addr", ":9443", "nats.io broker host address")
|
handsetCmd.Flags().String("http-addr", ":9443", "nats.io broker host address")
|
||||||
handsetCmd.Flags().String("nats-host", "10.136.49.95", "nats.io broker host address")
|
handsetCmd.Flags().String("nats-host", "nats", "nats.io broker host address")
|
||||||
handsetCmd.Flags().Int("nats-port", 4222, "nats.io broker tcp port")
|
handsetCmd.Flags().Int("nats-port", 4222, "nats.io broker tcp port")
|
||||||
handsetCmd.Flags().String("log-level", "debug", "log level trace")
|
handsetCmd.Flags().String("log-level", "debug", "log level trace")
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,7 @@ COPY . .
|
|||||||
|
|
||||||
RUN go get -d -v ./...
|
RUN go get -d -v ./...
|
||||||
|
|
||||||
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -mod=mod -ldflags "-s -w" -o myapp main.go
|
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -mod=mod -ldflags "-s -w" -o cml04-falcon-system main.go
|
||||||
|
|
||||||
# Etapa de producción
|
# Etapa de producción
|
||||||
|
|
||||||
@ -28,11 +28,13 @@ ADD celsa2048.crt /usr/local/share/ca-certificates/celsa2048.crt
|
|||||||
RUN chmod 644 /usr/local/share/ca-certificates/celsa2048.crt
|
RUN chmod 644 /usr/local/share/ca-certificates/celsa2048.crt
|
||||||
RUN apt-get update \
|
RUN apt-get update \
|
||||||
&& apt-get install -y --no-install-recommends ca-certificates
|
&& apt-get install -y --no-install-recommends ca-certificates
|
||||||
ADD assets /root/
|
ADD assets /root/assets
|
||||||
ADD templates /root/
|
ADD templates /root/templates
|
||||||
|
ADD server.crt /root/
|
||||||
|
ADD server.key /root/
|
||||||
RUN update-ca-certificates
|
RUN update-ca-certificates
|
||||||
WORKDIR /root/
|
WORKDIR /root/
|
||||||
|
|
||||||
COPY --from=builder /app/myapp .
|
COPY --from=builder /app/cml04-falcon-system .
|
||||||
|
|
||||||
CMD ["./myapp"]
|
CMD ["./cml04-falcon-system"]
|
Loading…
Reference in New Issue
Block a user