GithubHelp home page GithubHelp logo

go-masonry / tutorial Goto Github PK

View Code? Open in Web Editor NEW
4.0 3.0 2.0 4.51 MB

step-by-step tutorial on how to build gRPC server with mortar

Go 98.70% Makefile 1.11% Shell 0.18%
mortar uber-fx grpc-gateway grpc-go

tutorial's Introduction

Tutorial

NOTE This tutorial is outdated, instead read here: https://go-masonry.github.io and use this template

This tutorial will explain how to build a gRPC web service using go-masonry/mortar step by step.

Prerequisites

How to read this tutorial

There are 7 parts in this tutorial, each part adds on top of previous one

  1. Tutorial service API
  2. Project structure and business logic
  3. Dependency Injection and Mortar
  4. Wiring/Instrumentation of everything together
  5. Mortar Middleware (Tracing, Monitoring, etc)
  6. Tests example
  7. Makefile

You can create a local git repository and copy 01-api to it. Once you seen/understand the code, commit. Then copy 02-api contents to your directory. This will overwrite some code.

Repeat for each subsequent part. This way you will have git to show you what actually changed.

*** Make sure to adjust imports accordingly.

Alternate way to pass through tutorial

Read the docs of all 7 parts described above and clone the alternate-example. You'll find there almost the same code organized in a different way: there are 2 independent microservices and common module.

tutorial's People

Contributors

t0ch1k avatar talgendler avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

ttyerl

tutorial's Issues

Undefined mortar.Name in metrics.go and tracing.go

In 05-middleware

app/mortar/metrics.go:24:18: undefined: mortar.Name
app/mortar/tracing.go:25:29: undefined: mortar.Name

both mortarProject.Name and mortar.Name can be replaced by the string "mortar.name"

Missing workshop.mustEmbedUnimplementedWorkshopServer and workshop.mustEmbedUnimplementedSubWorkshopServer methods

Hello,
I'm at step 04-instrumentation. When running go run main.go config config/config.yml with files generated via the latest protoc plugins I encountered the above errors.

gRPC-Gateway version: grpc-gateway/[email protected]

protoc command line: protoc -I"../../googleapis/" -I. --openapiv2_out . --openapiv2_opt logtostderr=true --grpc-gateway_out=repeated_path_param_separator=ssv:. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative garage.proto

Resolution: the types within two files, listed below, were slightly changed:

app/controllers/workshop.go

type workshopController struct {
	deps    workshopControllerDeps
	client  *http.Client
	encoder *jsonpb.Marshaler
	workshop.UnimplementedWorkshopServer
}

app/controllers/subworkshop.go

type subWorkshopController struct {
	deps subWorkshopControllerDeps
	workshop.UnimplementedSubWorkshopServer
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.