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 (
"github.com/ManyakRus/starter/contextmain"
"github.com/ManyakRus/starter/log"
"github.com/ManyakRus/starter/port_checker"
"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/network/grpc/grpc_proto"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
"os"
"strings"
"sync"
"time"
)
type SettingsINI struct {
@ -20,8 +23,15 @@ type SettingsINI struct {
var Settings SettingsINI
var Conn *grpc.ClientConn
var Client grpc_proto.SyncServiceClient
// mutexReconnect - защита от многопоточности Reconnect()
var mutexReconnect = &sync.Mutex{}
// NeedReconnect - флаг необходимости переподключения
var NeedReconnect bool
func Connect() {
var err error
@ -77,6 +87,9 @@ func Start() {
stopapp.GetWaitGroup_Main().Add(1)
go WaitStop()
stopapp.GetWaitGroup_Main().Add(1)
go ping_go()
}
func CloseConnection() {
@ -104,3 +117,35 @@ func IsRecordNotFound(err error) bool {
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
import (
"github.com/ManyakRus/starter/contextmain"
"github.com/ManyakRus/starter/log"
"github.com/ManyakRus/starter/port_checker"
"github.com/ManyakRus/starter/stopapp"
"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/network/grpc/grpc_proto"
"sync"
"os"
"strings"
@ -26,6 +31,12 @@ var Conn *nats.Conn
// Client - подключение к клиенту NRPC
var Client *grpc_proto.Sync_serviceClient
// mutexReconnect - защита от многопоточности Reconnect()
var mutexReconnect = &sync.Mutex{}
// NeedReconnect - флаг необходимости переподключения
var NeedReconnect bool
// Connect - подключается к NATS
func Connect() {
var err error
@ -63,7 +74,6 @@ func FillSettings() {
Settings.NATS_PORT = os.Getenv("BUS_LOCAL_PORT")
}
if Settings.NATS_HOST == "" {
log.Panic("Need fill BUS_LOCAL_HOST ! in OS Environment ")
}
@ -96,6 +106,9 @@ func Start() {
stopapp.GetWaitGroup_Main().Add(1)
go WaitStop()
stopapp.GetWaitGroup_Main().Add(1)
go ping_go()
}
// CloseConnection - закрывает подключение к NATS
@ -122,3 +135,35 @@ func IsRecordNotFound(err error) bool {
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()
}