micro--go-micro
06659032a9
Plain 'go install go-micro.dev/v6/cmd/micro@latest' fails on the public module proxy with a version-constraints conflict: the proxy has cached the sub-paths go-micro.dev/v6/cmd and .../cmd/micro as standalone v0/v1 modules (from old github.com/micro/go-micro tags, surfaced during an earlier vanity meta bug), so @latest resolves to v1.18.0 with a mismatched module path. A version-prefix query (@v6) sidesteps it: those cached sub-path modules have no v6.x.x versions, so Go falls back to the go-micro.dev/v6 root module and builds correctly. Verified against proxy.golang.org. Claude-Session: https://claude.ai/code/session_01CmdEY7pYmV5zzwCjNJ4ykL Co-authored-by: Claude <noreply@anthropic.com>
102 行
2.4 KiB
Markdown
102 行
2.4 KiB
Markdown
# 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](https://github.com/micro/go-micro/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
|
|
|
|
- **[Full Tutorial](getting-started.html)** - In-depth guide
|
|
- **[Examples](examples/)** - Learn by example
|
|
- **[API Reference](https://pkg.go.dev/go-micro.dev/v6)** - Complete API docs
|
|
- **[Deployment](deployment.html)** - Deploy to production
|
|
|
|
## 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: "user@example.com",
|
|
})
|
|
```
|
|
|
|
## Get Help
|
|
|
|
- **[Discord Community](https://discord.gg/WeMU5AGxD)** - Chat with other users
|
|
- **[GitHub Issues](https://github.com/micro/go-micro/issues)** - Report bugs or request features
|
|
- **[Documentation](https://go-micro.dev/docs/)** - Complete docs
|
|
|