Back to Go Micro

Quick Start

internal/website/docs/quickstart.md

6.2.12.4 KB
Original Source

Quick Start

Get up and running with go-micro in under 5 minutes.

Install

The recommended way is the precompiled binary — no Go toolchain required:

bash
curl -fsSL https://go-micro.dev/install.sh | sh

Or, if you have Go and prefer to build from source:

bash
go install go-micro.dev/v6/cmd/micro@v6

Note: Use @v6 (not @latest) — it resolves to the newest v6.x.x release. Plain @latest can currently resolve to a stale pre-rename tag through the public module proxy and fail with a "version constraints conflict"; @v6 avoids that. To pin an exact version use e.g. @v6.2.0 (see releases).

Create Your First Service

bash
# Create a new service
micro new helloworld
cd helloworld

# Review the generated code
ls -la

# Run locally with hot reload
micro run

# Test it
curl -X POST http://localhost:8080/api/helloworld/Helloworld.Call \
  -H "Content-Type: application/json" \
  -d '{"name": "World"}'

Next Steps

Common Patterns

RPC Service

go
package main

import "go-micro.dev/v6"

type Greeter struct{}

func (g *Greeter) Hello(ctx context.Context, req *Request, rsp *Response) error {
    rsp.Message = "Hello " + req.Name
    return nil
}

func main() {
    service := micro.NewService("greeter")
    service.Handle(new(Greeter))
    service.Run()
}

Pub/Sub Event Handler

go
import "go-micro.dev/v6"

func main() {
    service := micro.NewService("subscriber")
    
    // Subscribe to events
    micro.RegisterSubscriber("user.created", service.Server(), 
        func(ctx context.Context, event *UserCreatedEvent) error {
            log.Infof("User created: %s", event.Email)
            return nil
        },
    )
    
    service.Run()
}

Publishing Events

go
publisher := micro.NewEvent("user.created", client)
publisher.Publish(ctx, &UserCreatedEvent{
    Email: "[email protected]",
})

Get Help