Add consul registeration

This commit is contained in:
2024-06-16 23:32:52 +08:00
parent 05a59113c9
commit 9a8df85250
4 changed files with 78 additions and 54 deletions

View File

@ -0,0 +1,38 @@
package gap
import (
"fmt"
"github.com/hashicorp/consul/api"
"github.com/spf13/viper"
"strconv"
"strings"
)
func Register() error {
cfg := api.DefaultConfig()
cfg.Address = viper.GetString("consul.addr")
client, err := api.NewClient(cfg)
if err != nil {
return err
}
bind := strings.SplitN(viper.GetString("consul.srv_serve"), ":", 2)
baseAddr := viper.GetString("consul.srv_http")
port, _ := strconv.Atoi(bind[1])
registration := new(api.AgentServiceRegistration)
registration.ID = viper.GetString("id")
registration.Name = "Hydrogen.Paperclip"
registration.Address = bind[0]
registration.Port = port
registration.Check = &api.AgentServiceCheck{
HTTP: fmt.Sprintf("%s/.well-known", baseAddr),
Timeout: "5s",
Interval: "5s",
DeregisterCriticalServiceAfter: "10s",
}
return client.Agent().ServiceRegister(registration)
}

View File

@ -1,8 +1,9 @@
package main
import (
database2 "git.solsynth.dev/hydrogen/paperclip/pkg/internal/database"
grpc2 "git.solsynth.dev/hydrogen/paperclip/pkg/internal/grpc"
"git.solsynth.dev/hydrogen/paperclip/pkg/internal/database"
"git.solsynth.dev/hydrogen/paperclip/pkg/internal/gap"
"git.solsynth.dev/hydrogen/paperclip/pkg/internal/grpc"
"os"
"os/signal"
"syscall"
@ -35,14 +36,17 @@ func main() {
}
// Connect to database
if err := database2.NewSource(); err != nil {
if err := database.NewSource(); err != nil {
log.Fatal().Err(err).Msg("An error occurred when connect to database.")
} else if err := database2.RunMigration(database2.C); err != nil {
} else if err := database.RunMigration(database.C); err != nil {
log.Fatal().Err(err).Msg("An error occurred when running database auto migration.")
}
// Connect other services
if err := grpc2.ConnectPassport(); err != nil {
if err := gap.Register(); err != nil {
log.Error().Err(err).Msg("An error occurred when registering service to gateway...")
}
if err := grpc.ConnectPassport(); err != nil {
log.Fatal().Err(err).Msg("An error occurred when connecting to passport grpc endpoint...")
}
@ -56,11 +60,9 @@ func main() {
go server.Listen()
// Grpc Server
go func() {
if err := grpc2.StartGrpc(); err != nil {
log.Fatal().Err(err).Msg("An message occurred when starting grpc server.")
}
}()
if err := grpc.StartGrpc(); err != nil {
log.Fatal().Err(err).Msg("An message occurred when starting grpc server.")
}
// Messages
log.Info().Msgf("Paperclip v%s is started...", pkg.AppVersion)