micro--go-micro
6488d8402d
* docs: group README features by section (AI / Framework / DX) The features table repeated 'AI' down the Category column. Split into three grouped tables — AI, Framework, Developer experience & deployment — dropping the repetitive column. Adds a Guardrails row (MaxSteps, ApproveTool). * test: flow-to-agent end-to-end in the harness Proves 'Flow triggers, Agent reasons': a workflow with FlowAgent hands an event to the registered conductor agent over RPC, which plans, creates tasks, and delegates to comms — the whole chain over real RPC with only the LLM mocked. Deterministic (shared in-memory registry, no sleeps), passes under -race. * blog: 'The Evolution of Microservices' (#19) A technical history of distributed-systems eras — the monolith's coordination cost, the distributed-systems tax, containers and declarative orchestration, the service mesh, and the modular-monolith correction — establishing the durable unit (named, typed, discoverable, independently deployable) that every runtime wave required. Then the technical argument for agents: an LLM tool call needs exactly a service interface, so the caller shifts from deterministic code to a reasoner that composes typed capabilities from intent, with the honest caveats (non-determinism, cost, guardrails). Not a product pitch. * docs: bump install version to v5.27.0 --------- Co-authored-by: Claude <noreply@anthropic.com>
2.0 KiB
2.0 KiB
Quick Start
Get up and running with go-micro in under 5 minutes.
Install
go install go-micro.dev/v5/cmd/micro@v5.27.0
Note: Use a specific version instead of
@latestto avoid module path conflicts. See releases for the latest version.
Create Your First Service
# 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
- Full Tutorial - In-depth guide
- Examples - Learn by example
- API Reference - Complete API docs
- Deployment - Deploy to production
Common Patterns
RPC Service
package main
import "go-micro.dev/v5"
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.New("greeter")
service.Handle(new(Greeter))
service.Run()
}
Pub/Sub Event Handler
import "go-micro.dev/v5"
func main() {
service := micro.New("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
publisher := micro.NewEvent("user.created", client)
publisher.Publish(ctx, &UserCreatedEvent{
Email: "user@example.com",
})
Get Help
- Discord Community - Chat with other users
- GitHub Issues - Report bugs or request features
- Documentation - Complete docs