golang 集成开发框架 wego

未知
Google Go 查看源码»
跨平台
2019-09-30
沧浪De水

wego 是一个采用 go-kit 模式封装的 golang 开发框架,专注编写业务逻辑。

开发流程:

  1. 编写 service 中间件
  2. 组合中间件形成 service chain
  3. handler 由 filter(endpoint)和 service chain 组合形成 
  4. provider 中注册 handler
  5. server 的路由中注册各种 handler

内置支持 Server

  • http
  • grpc
  • websocket
  • cronjob
  • timer
  • command
  • redis queue
  • 内部event server
  • gateway server

main.go

    //如果参数配置了registy,则自动进行consul的服务注册 grpc http 都可
	//例如go run main.go -name=test_service  -registy=127.0.0.1:8500 -server=grpc
	wego.Provider(&providers.ConsulRegistyProvider{})
    
    //这里注册自己的handler
	wego.Provider(&provider.ExamProvider{})
	
	//下面的server,根据启动args参数决定
	wego.Router("grpc",&router.GrpcRouter{})
	wego.Router("http",&router.HttpRouter{})
	wego.Router("queue",&router.QueueRouter{})
	wego.Router("command",&router.CommandRouter{})
	wego.Router("websocket",&router.WebSocketRouter{})
	wego.Router("timer",&router.TimerRouter{})
	wego.Router("cron",&router.CronRouter{})
	
	//内置加载事件服务,无需路由,直接调用  handler
    wego.Router("event", servers.NewEventCommServer())
	
	wego.Start()

举例

    //经过jwt认证后的用户id,和name
	fmt.Println(ctx.Request("claim.Id"))
	fmt.Println(ctx.GetValue("request.claim.Name"))
    //cache使用
    v, _ := cache.Get("aaaaa")
	v := make(map[string]interface{})
	v["aaa"] = "bbb"
	v["ccc"] = "ddd"
	_ = cache.Set("aaaaa", v, 60)
	//日志使用
	ctx.Log.Info("one....")
	ctx.Log.Infof(format,arg...)
	//请求参数
	ctx.Request("claim.Id")
	//返回值
	ctx.Response("aa.bb", "cc")
	ctx.Response("aa.cc", "dd")
	//redis使用
    client := clients.Redis() //从pool中获取一个链接
    defer client.Close()      //延时释放链接,本方法执行完毕时释放
    _, _ = client.Do("SET", "go_key", "value")
    //mysql使用
    user := model.CommUser{Id: id}
    has, _ := clients.DB().Get(&user)
    //event使用
	params := make(map[string]interface{})
	payload := &contracts.Payload{
		Route:  "two", ->接收处理的handler
		Params: params,
	}
	events.Fire(payload)
	//redis queue使用 默认db->1
    msg := make(map[string]interface{})
    msg["aaa"] = "bbb"
    err := queues.Fire(
        "demo1",     ->发送的redis 队列
        "queue_test",  ->侦听队列的server需要处理的路由handler
        msg,
    )
    //远程服务调用,// 为现有php模式而封装
    params:=make(map[string]interface{})
    params["test_rpc_post"] = "test_rpc_post"
    resp := clients.
        Micro("consul_demo").    //服务的名称
        Service("demo.post").    //服务的注册的handler
        Params(params).
        Run()
    该方法会从consul中获取注册的服务,并随机选择一个进行请求,支持grpc和http post
    http post 对应的远端路由为 http:/host+port/demo/post
的码云指数为
超过 的项目
加载中
请先登录后再评论。

暂无资讯

暂无问答

weatpy: 命令行天气预报, wego的python实现

weatpy 是一个命令行天气预报. 是wego的python实现. 该项目仅用于学习用途. 项目地址 https://github.com/mattkang0/weatpy 依赖 osx或linux系统 终端为utf-8且支持256色 等宽字体 天气预报的...

2016/12/14 19:23
58
0
weatpy: 命令行天气预报, wego的python实现

weatpy 是一个命令行天气预报. 是wego的python实现. 该项目仅用于学习用途. 项目地址 https://github.com/mattkang0/weatpy 依赖 osx或linux系统 终端为utf-8且支持256色 等宽字体 天气预报的...

2016/12/14 19:33
8
0
wego-采用go-kit模式封装开发框架

1 编写controller负责, 请求验证,响应,swagger格式,service中间件调用 2.handler 由 filter(endpoint)和controller组合形成 3.provider中注册handler 4.server的路由中注册各种handler 5.支....

2019/10/28 14:16
62
0
使用这个开源工具获取本地天气预报

https://linux.cn/article-11879-1.html 在我们的 20 个使用开源提升生产力的系列的第十三篇文章中使用 wego 来了解出门前你是否要需要外套、雨伞或者防晒霜。 去年,我在 19 天里给你介绍了...

03/19 20:06
30
0
使用这个开源工具获取本地天气预报

https://linux.cn/article-11879-1.html 在我们的 20 个使用开源提升生产力的系列的第十三篇文章中使用 wego 来了解出门前你是否要需要外套、雨伞或者防晒霜。 去年,我在 19 天里给你介绍了...

03/19 20:27
14
0
Linux Terminal看天气预报

如果你想通过Linux Terminal获取某地的天气,可以使用下面的命令: #curl http://wttr.in/beijing (或者直接访问http://wttr.in/beijing ) https://github.com/chubin/wttr.in https://gi...

2016/03/19 02:12
140
1
基于go的微信sdk即将发布!!!

github.com/godcong/wego 是时候表演真正的技术了 用php的童鞋是不是觉得接口都很熟悉啊? 参考了很多easyphp的写法,再加上go的性能. 是不是在流口水呢??? 接口最全的go微信sdk框架... 赶紧s...

2018/11/07 01:47
102
0
weatpy源码剖析

基本思路 golang 后端前端可切换 network 命令行解析 数据结构 字符画前端 json前端 编写setuppy golang写的命令行天气预报wego,其github上居然有几千个star,于是就想着用python来写写看。...

2016/12/14 19:25
6
0
【WEGO】GO注释可视化

导入数据 BGI开发的一款web工具,用于可视化GO注释结果。自己平时不用,但要介绍给别人,简单记录下要点,避免每次授课前自己忘了又要摸索。 地址:http://wego.genomics.org.cn/ 导入文件到...

2019/12/29 20:20
39
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部