首页 > 其他分享 >(15)go-micro微服务main.go开发

(15)go-micro微服务main.go开发

时间:2023-01-19 10:35:31浏览次数:56  
标签:account 15 err micro2 micro ConsulInfo go

目录

一 导包

import (
   micro2 "account/common/micro"
   "account/config/logger"
   "account/config/mysql"
   "account/config/redis"
   "account/domain/repository"
   "account/domain/service"
   "account/handler"
   "account/proto/account"
   "fmt"
   _ "github.com/jinzhu/gorm/dialects/mysql"
   "github.com/micro/go-micro/v2"
   "github.com/micro/go-micro/v2/registry"
   "github.com/micro/go-plugins/registry/consul/v2"
   "go.uber.org/zap"
)

二 配置中心

// 1.配置中心
consulConfig, err := micro2.GetConsulConfig("localhost", 8500, "/micro/config")
if err != nil {
   fmt.Printf("Init consulConfig failed, err: %v\n", err)
}

三 注册中心

// 2.注册中心
consulRegistry := consul.NewRegistry(func(options *registry.Options) {
   options.Addrs = []string{
      "127.0.0.1:8500",
   }
})
if err := micro2.GetAccountFromConsul(consulConfig, "account"); err != nil {
   fmt.Printf("Init consul failed, err: %v\n", err)
}
fmt.Println(micro2.ConsulInfo)

四 zap日志初始化

// 3.zap日志初始化
if err := logger.Init(); err != nil {
   fmt.Printf("Init logger failed, err: %v\n", err)
   return
}
defer zap.L().Sync()

五 初始化Mysql数据库

// 5.初始化数据库
db, err := mysql.MysqlInit(micro2.ConsulInfo.Mysql.User, micro2.ConsulInfo.Mysql.Pwd, micro2.ConsulInfo.Mysql.Database)
if err != nil {
   logger.Error(err)
   return
}
defer db.Close()
// 创建实例
accountService := service.NewUserService(repository.NewUserRepository(db))

六 初始化Redis连接

// 6.初始化Redis连接
if err := redis.Init(); err != nil {
   logger.Error(err)
   return
}
defer redis.Close()

七 注册服务

// 8.注册服务
registryService := micro.NewService(
   micro.Name(micro2.ConsulInfo.Micro.Name),
   micro.Version(micro2.ConsulInfo.Micro.Version),
   //暴露的服务地址
   micro.Address(micro2.ConsulInfo.Micro.Address),
   //添加consul 注册中心
   micro.Registry(consulRegistry),
)

八 初始化服务

// 9.初始化服务
registryService.Init()

九 注册 handle

// 10.注册Handle
account.RegisterAccountHandler(registryService.Server(), &handler.Account{AccountService: accountService})

十 启动服务

// 11.启动服务
if err := registryService.Run(); err != nil {
   logger.Fatal(err)
}

十一 main.go全部代码

package main

import (
   micro2 "account/common/micro"
   "account/config/logger"
   "account/config/mysql"
   "account/config/redis"
   "account/domain/repository"
   "account/domain/service"
   "account/handler"
   "account/proto/account"
   "fmt"
   _ "github.com/jinzhu/gorm/dialects/mysql"
   "github.com/micro/go-micro/v2"
   "github.com/micro/go-micro/v2/registry"
   "github.com/micro/go-plugins/registry/consul/v2"
   "go.uber.org/zap"
)

func main() {
   // 1.配置中心
   consulConfig, err := micro2.GetConsulConfig("localhost", 8500, "/micro/config")
   if err != nil {
      fmt.Printf("Init consulConfig failed, err: %v\n", err)
   }
   // 2.注册中心
   consulRegistry := consul.NewRegistry(func(options *registry.Options) {
      options.Addrs = []string{
         "127.0.0.1:8500",
      }
   })
   if err := micro2.GetAccountFromConsul(consulConfig, "account"); err != nil {
      fmt.Printf("Init consul failed, err: %v\n", err)
   }
   fmt.Println(micro2.ConsulInfo)
   // 3.zap日志初始化
   if err := logger.Init(); err != nil {
      fmt.Printf("Init logger failed, err: %v\n", err)
      return
   }
   defer zap.L().Sync()
   // 5.初始化数据库
   db, err := mysql.MysqlInit(micro2.ConsulInfo.Mysql.User, micro2.ConsulInfo.Mysql.Pwd, micro2.ConsulInfo.Mysql.Database)
   if err != nil {
      logger.Error(err)
      return
   }
   defer db.Close()
   // 创建实例
   accountService := service.NewUserService(repository.NewUserRepository(db))
   // 6.初始化Redis连接
   if err := redis.Init(); err != nil {
      logger.Error(err)
      return
   }
   defer redis.Close()
   // 8.注册服务
   registryService := micro.NewService(
      micro.Name(micro2.ConsulInfo.Micro.Name),
      micro.Version(micro2.ConsulInfo.Micro.Version),
      //暴露的服务地址
      micro.Address(micro2.ConsulInfo.Micro.Address),
      //添加consul 注册中心
      micro.Registry(consulRegistry),
   )
   // 9.初始化服务
   registryService.Init()
   // 10.注册Handle
   account.RegisterAccountHandler(registryService.Server(), &handler.Account{AccountService: accountService})
   // 11.启动服务
   if err := registryService.Run(); err != nil {
      logger.Fatal(err)
   }
}
  • 至此,可以运行项目了,运行成功后出现下图,即可开发成功

  • 记得把consul运行起来,因为项目中使用了consul

  • 如果报错,可以私信博主或者加入博主的学习交流裙询问都可

image.png

十二 最后

  • 至此,go-micro微服务项目main.go开发工作就正式完成。

  • 接下来就开始jaeger链路追踪的代码编写了,希望大家关注博主和关注专栏,第一时间获取最新内容,每篇博客都干货满满。

欢迎大家加入 夏沫の梦的学习交流群 进行学习交流经验,点击 夏沫の梦学习交流

标签:account,15,err,micro2,micro,ConsulInfo,go
From: https://www.cnblogs.com/qi66/p/17061120.html

相关文章

  • Caddy-用Go写的新一代可扩展WebServer
    前几天用Netmaker的时候发现它用Caddy替换掉了Nginx,用了后发现确实简单好用,就安利一下。Caddy是一个强大的、可扩展的平台,用Go编写,可以为你的站点、服务和应用程......
  • Hugo + Github 静态托管自己博客
    详情hugo:官网地址Go-lang:官网地址Git:官网地址辅助工具->GithubProxy:官网地址......
  • django FilteredRelation 的用法
    有两大用处FilteredRelation类允许为查询集增加一个ON从句可以在多个join中语句直接引用变量fromdjango.db.modelsimportFilteredRelation,Qresult_1=Restaur......
  • django的 prefetch_related 只能 all() 可以用 filter ?
    直接说答案<=Django1.6只能在使用代码过滤somethings=Foo.objects.filter(author="author").prefetch_related("bar_set")forainsomethings:somebars=[p......
  • 代码随想录算法训练营第八天 344.反转字符串 | 541. 反转字符串II | 剑指Offer 05.替
    字符串lc344反转字符串这道题目其实比较简单,关键在于理解题意并想想哪些库函数可以用,哪些不可以。像这道题,reverse就不要用,swap就可以。自己的classSolution{publi......
  • B. Going to the Cinema
    https://codeforces.com/contest/1782/problem/B题目大意就是给定n个人,每个人有一个除自己之外的最少陪同人数,选一部分人去电影院,要求去的人人数大于等于去的每个人要陪同......
  • 安卓 一加7t禁止google play服务
    禁用的命令adbshellpmdisable-usercom.google.android.gmsadbshellpmdisable-usercom.google.android.partnersetupadbshellpmdisable-usercom.google.andr......
  • go bufio包
    bufio读取原理将文件内容预读取到缓存--bufio这里的思想很简单,当用户从文件中读取数据的时候,先从文件中读取一大块内容到内存缓冲区,以供后面的读取操作直接从内存缓冲区......
  • Mongodb密码设置
    Mongodb密码设置Mongodb版本4.4文章下面有写每一步的作用,不关心的可以跳过。本文代码块的代码都是在mongo命令行下执行。mongodb的每个数据库都可以有一个(管理员和密......
  • go json
    转化为json格式funcMarshal(vinterface{})([]byte,error)//将v(一般为结构体)转化为json格式//json.gopackagemainimport("encoding/json""fm......