MQ, KV and MQ allocator

This commit is contained in:
2024-10-24 23:46:09 +08:00
parent aa67bd0b8f
commit 23d14e4e46
11 changed files with 578 additions and 3 deletions

View File

@ -0,0 +1,33 @@
package grpc
import (
"context"
"git.solsynth.dev/hypernet/nexus/pkg/internal/kv"
"git.solsynth.dev/hypernet/nexus/pkg/internal/mq"
"git.solsynth.dev/hypernet/nexus/pkg/proto"
"github.com/spf13/viper"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
func (v *Server) AllocMessageQueue(ctx context.Context, request *proto.AllocMqRequest) (*proto.AllocMqResponse, error) {
if mq.Kmq == nil {
return &proto.AllocMqResponse{IsSuccess: false}, status.Error(codes.Unavailable, "message queue wasn't configured")
}
return &proto.AllocMqResponse{
IsSuccess: true,
Addr: viper.GetString("mq.addr"),
}, nil
}
func (v *Server) AllocKv(ctx context.Context, request *proto.AllocKvRequest) (*proto.AllocKvResponse, error) {
if kv.Kv == nil {
return &proto.AllocKvResponse{IsSuccess: false}, status.Error(codes.Unavailable, "kv wasn't configured")
}
return &proto.AllocKvResponse{
IsSuccess: true,
Endpoints: viper.GetStringSlice("kv.endpoints"),
}, nil
}

View File

@ -1,7 +1,7 @@
package grpc
import (
directory2 "git.solsynth.dev/hypernet/nexus/pkg/internal/directory"
"git.solsynth.dev/hypernet/nexus/pkg/internal/directory"
"net"
"git.solsynth.dev/hypernet/nexus/pkg/proto"
@ -17,6 +17,7 @@ import (
type Server struct {
proto.UnimplementedDatabaseServiceServer
proto.UnimplementedStreamServiceServer
proto.UnimplementedAllocatorServiceServer
health.UnimplementedHealthServer
srv *grpc.Server
@ -27,10 +28,11 @@ func NewServer() *Server {
srv: grpc.NewServer(),
}
proto.RegisterDirectoryServiceServer(server.srv, &directory2.ServiceRpcServer{})
proto.RegisterCommandProviderServer(server.srv, &directory2.CommandRpcServer{})
proto.RegisterDirectoryServiceServer(server.srv, &directory.ServiceRpcServer{})
proto.RegisterCommandProviderServer(server.srv, &directory.CommandRpcServer{})
proto.RegisterDatabaseServiceServer(server.srv, server)
proto.RegisterStreamServiceServer(server.srv, server)
proto.RegisterAllocatorServiceServer(server.srv, server)
health.RegisterHealthServer(server.srv, server)
reflection.Register(server.srv)

16
pkg/internal/mq/nats.go Normal file
View File

@ -0,0 +1,16 @@
package mq
import "github.com/nats-io/nats.go"
var Kmq *nats.Conn
func ConnectNats(in string) error {
nc, err := nats.Connect(in)
if err != nil {
return err
} else {
Kmq = nc
}
return nil
}