1
0
mirror of https://github.com/ManyakRus/crud_generator.git synced 2024-12-22 00:36:41 +02:00

сделал func ping_go()

This commit is contained in:
Nikitin Aleksandr 2024-01-17 10:55:38 +03:00
parent a3e7fe06a6
commit df086bec0b
2 changed files with 93 additions and 3 deletions

View File

@ -3,13 +3,16 @@ package grpc_client
import ( import (
"github.com/ManyakRus/starter/contextmain" "github.com/ManyakRus/starter/contextmain"
"github.com/ManyakRus/starter/log" "github.com/ManyakRus/starter/log"
"github.com/ManyakRus/starter/port_checker"
"github.com/ManyakRus/starter/stopapp" "github.com/ManyakRus/starter/stopapp"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/api/grpc_proto"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/db/constants" "gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/db/constants"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/network/grpc/grpc_proto"
"google.golang.org/grpc" "google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure" "google.golang.org/grpc/credentials/insecure"
"os" "os"
"strings" "strings"
"sync"
"time"
) )
type SettingsINI struct { type SettingsINI struct {
@ -20,8 +23,15 @@ type SettingsINI struct {
var Settings SettingsINI var Settings SettingsINI
var Conn *grpc.ClientConn var Conn *grpc.ClientConn
var Client grpc_proto.SyncServiceClient var Client grpc_proto.SyncServiceClient
// mutexReconnect - защита от многопоточности Reconnect()
var mutexReconnect = &sync.Mutex{}
// NeedReconnect - флаг необходимости переподключения
var NeedReconnect bool
func Connect() { func Connect() {
var err error var err error
@ -77,6 +87,9 @@ func Start() {
stopapp.GetWaitGroup_Main().Add(1) stopapp.GetWaitGroup_Main().Add(1)
go WaitStop() go WaitStop()
stopapp.GetWaitGroup_Main().Add(1)
go ping_go()
} }
func CloseConnection() { func CloseConnection() {
@ -104,3 +117,35 @@ func IsRecordNotFound(err error) bool {
return Otvet return Otvet
} }
// ping_go - делает пинг каждые 60 секунд, и реконнект
func ping_go() {
ticker := time.NewTicker(60 * time.Second)
defer ticker.Stop()
addr := Settings.SYNC_SERVICE_HOST + ":" + Settings.SYNC_SERVICE_PORT
//бесконечный цикл
loop:
for {
select {
case <-contextmain.GetContext().Done():
log.Warn("Context app is canceled. grpc_client.ping")
break loop
case <-ticker.C:
err := port_checker.CheckPort_err(Settings.SYNC_SERVICE_HOST, Settings.SYNC_SERVICE_PORT)
//log.Debug("ticker, ping err: ", err) //удалить
if err != nil {
NeedReconnect = true
log.Warn("grpc_client CheckPort(", addr, ") error: ", err)
} else if NeedReconnect == true {
log.Warn("grpc_client CheckPort(", addr, ") OK. Start Reconnect()")
NeedReconnect = false
Connect()
}
}
}
stopapp.GetWaitGroup_Main().Done()
}

View File

@ -1,12 +1,17 @@
//Файл создан автоматически кодогенератором crud_generator
//Не изменяйте ничего здесь.
package nrpc_client package nrpc_client
import ( import (
"github.com/ManyakRus/starter/contextmain" "github.com/ManyakRus/starter/contextmain"
"github.com/ManyakRus/starter/log" "github.com/ManyakRus/starter/log"
"github.com/ManyakRus/starter/port_checker"
"github.com/ManyakRus/starter/stopapp" "github.com/ManyakRus/starter/stopapp"
"github.com/nats-io/nats.go" "github.com/nats-io/nats.go"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/api/grpc_proto"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/db/constants" "gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/db/constants"
"gitlab.aescorp.ru/dsp_dev/claim/sync_service/pkg/network/grpc/grpc_proto" "sync"
"os" "os"
"strings" "strings"
@ -26,6 +31,12 @@ var Conn *nats.Conn
// Client - подключение к клиенту NRPC // Client - подключение к клиенту NRPC
var Client *grpc_proto.Sync_serviceClient var Client *grpc_proto.Sync_serviceClient
// mutexReconnect - защита от многопоточности Reconnect()
var mutexReconnect = &sync.Mutex{}
// NeedReconnect - флаг необходимости переподключения
var NeedReconnect bool
// Connect - подключается к NATS // Connect - подключается к NATS
func Connect() { func Connect() {
var err error var err error
@ -63,7 +74,6 @@ func FillSettings() {
Settings.NATS_PORT = os.Getenv("BUS_LOCAL_PORT") Settings.NATS_PORT = os.Getenv("BUS_LOCAL_PORT")
} }
if Settings.NATS_HOST == "" { if Settings.NATS_HOST == "" {
log.Panic("Need fill BUS_LOCAL_HOST ! in OS Environment ") log.Panic("Need fill BUS_LOCAL_HOST ! in OS Environment ")
} }
@ -96,6 +106,9 @@ func Start() {
stopapp.GetWaitGroup_Main().Add(1) stopapp.GetWaitGroup_Main().Add(1)
go WaitStop() go WaitStop()
stopapp.GetWaitGroup_Main().Add(1)
go ping_go()
} }
// CloseConnection - закрывает подключение к NATS // CloseConnection - закрывает подключение к NATS
@ -122,3 +135,35 @@ func IsRecordNotFound(err error) bool {
return Otvet return Otvet
} }
// ping_go - делает пинг каждые 60 секунд, и реконнект
func ping_go() {
ticker := time.NewTicker(60 * time.Second)
defer ticker.Stop()
addr := Settings.NATS_HOST + ":" + Settings.NATS_PORT
//бесконечный цикл
loop:
for {
select {
case <-contextmain.GetContext().Done():
log.Warn("Context app is canceled. nrpc_client.ping")
break loop
case <-ticker.C:
err := port_checker.CheckPort_err(Settings.NATS_HOST, Settings.NATS_PORT)
//log.Debug("ticker, ping err: ", err) //удалить
if err != nil {
NeedReconnect = true
log.Warn("nrpc_client CheckPort(", addr, ") error: ", err)
} else if NeedReconnect == true {
log.Warn("nrpc_client CheckPort(", addr, ") OK. Start Reconnect()")
NeedReconnect = false
Connect()
}
}
}
stopapp.GetWaitGroup_Main().Done()
}