golang 同时(一个项目)注册http和GRPC服务

news/2024/10/4 21:18:51

main 里面

package mainimport ("fmt""github.com/gin-gonic/gin""github.com/hashicorp/consul/api"grpc "gorm_project/grpc/services""gorm_project/route""gorm_project/utils""log""net/http"
)func main() {// **************协程开始Grpc服务 **************************go grpc.RunGrpc()utils.InitRedisClient()r := gin.Default()// ****** consul健康检查服务 *******r.GET("/health", func(c *gin.Context) { c.String(http.StatusOK, "OK") })//r.Use(middleware.ValiTokenMiddleware())
    route.AddGoodsRoute(r)route.AddOrderInfo(r)// *************注册服务到consul **********************client, regId, err := ConsulRegister()if err != nil {return} else { // 注销 consul 服务defer client.Agent().ServiceDeregister(regId)}r.Run(":8595")
}// ***************注册服务到consul 方法***********************
func ConsulRegister() (*api.Client, string, error) {// 创建Consul客户端config := api.DefaultConfig()config.Address = "39.101.194.250:8500" // Consul服务器地址client, err := api.NewClient(config)if err != nil {log.Fatal(err)}// 注册服务到consulreg := new(api.AgentServiceRegistration)reg.ID = "httpgrpc-http-service-id"reg.Name = "httpgrpc-http"reg.Tags = []string{"httpgrpc-http"}reg.Port = 8595reg.Address = "127.0.0.1"reg.Check = &api.AgentServiceCheck{HTTP:                           fmt.Sprintf("http://localhost:%d/health", reg.Port),Timeout:                        "5s",Interval:                       "10s",DeregisterCriticalServiceAfter: "30s",}err = client.Agent().ServiceRegister(reg)return client, reg.ID, err
}

协程里的GRPC 注册到consul

package grpcimport ("context""fmt""github.com/hashicorp/consul/api"pb "gorm_project/grpc/services/proto""log""net""google.golang.org/grpc"
)type Server struct {pb.UnimplementedGreeterServer
}func (s *Server) SayHello(cxt context.Context, r *pb.HelloRequest) (h *pb.HelloReply, e error) {return &pb.HelloReply{Message: "好样的"}, nil
}func RunGrpc() {fmt.Println("开始监听了~~~~~")// 1.开始监听listen, err := net.Listen("tcp", ":9868")if err != nil {fmt.Println("listen err:", err)return}defer listen.Close()// 2.创建GRPC 服务server := grpc.NewServer()// 3.将服务和实例注册 ******** 注意 pb 取于.proto 里的 option go_package = "./;pb";  ********pb.RegisterGreeterServer(server, &Server{})// *************注册服务到consul **********************client, regId, err := ConsulRegister()if err != nil {return} else { // 注销 consul 服务defer client.Agent().ServiceDeregister(regId)}// 4.服务开始监听errs := server.Serve(listen)if errs != nil {fmt.Println("服务出错 err:", err)return}//time.Sleep(time.Second * 10)
}// ***************注册服务到consul 方法***********************
func ConsulRegister() (*api.Client, string, error) {// 创建Consul客户端config := api.DefaultConfig()config.Address = "39.101.194.250:8500" // Consul服务器地址client, err := api.NewClient(config)if err != nil {log.Fatal(err)}// 注册服务reg := new(api.AgentServiceRegistration)reg.ID = "httpgrpc-grpc-service-id"reg.Name = "httpgrpc-grpc"reg.Tags = []string{"httpgrpc-grpc"}reg.Port = 8595reg.Address = "127.0.0.1"reg.Check = &api.AgentServiceCheck{HTTP:                           fmt.Sprintf("http://localhost:%d/health", reg.Port),Timeout:                        "5s",Interval:                       "10s",DeregisterCriticalServiceAfter: "30s",}err = client.Agent().ServiceRegister(reg)return client, reg.ID, err
}

效果

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/44181.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

如何设置word首页封面不出现页眉和编码

方法: 比如说我想让页码从第二页开始编号,那就双击第二页的编号,然后勾取消掉这个链接到前一页(我这里已经勾选掉了),之后直接删除掉第一页的编号就可以了如果数字不对的话,可以在“设置页码格式”中修改一下起始的页码:参考: 设置word中第一页不显示页码,第二页页码…

Paimon笔记

支持高吞吐数据摄入、变更追踪、高效分析的流批数据湖 基于LSM提升写入速度并降低写入消耗;基于有序的SortRun裁剪大部分数据以提升查询性能;支持多种merge引擎实现高性能流表打宽 基于Flink&Paimon实现,提供数据一致性管理能力,解决流式数仓普遍存在的问题 paimon通过…

6.14安卓开发日记58

实验三:Newton法程序设计 一、实验目的 掌握Hesse矩阵的计算方法和Newton法的基本思想及其迭代步骤;学会运用MATLAB编程实现常用优化算法;能够正确处理实验数据和分析实验结果及调试程序。 二、实验内容 (1)求解无约束优化问题:; (2)终止准则取; (3)完成Newton法(…

Ubuntu24.04安装金铲铲之战

结论 使用waydroid方案,可以打开游戏,实际效果后续更新参考 Documentation waydroid_script 注意 waydroid_script需要安装libndk和libhoudini

计组要我命第四天

要命计组(4) 开始时间 2024-06-15 22:02:30 结束时间 2024-06-15 23:38:03 前言:真学不完了,服了,后天考试,mbd不应该昨天晚上去酒吧玩的 总结:主要为完成了画图题和计算题的学习,也学习了一些存储器的基本概念,比如说动态ram和静态ram,还有一些比如…

5.30安卓开发日记47

① 、实现的功能为对错题信息的增删改查 Ⅰ、主页面 Ⅱ、错题录入 Ⅲ、错题查询(可根据题目搜索) Ⅳ、错题修改 Ⅴ、错题删除(选中行后右键选择删除) Ⅵ、显示详细信息

5.26安卓开发日记43

今天对于前端传递到后端的数据,时使用编码后发送的,导致传递到后端后必须得先进行返还原值再使用,对我们测试阶段,就先不使用这种方法, package com.example.pojo; import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor; import java.u…

5.25安卓开发日记42

今天实现类似知网的筛选操作,整体界面类似这种