Update readme with example

This commit is contained in:
Asim Aslam 2015-01-14 10:50:43 +00:00
parent 109b7e5f7e
commit 2e64897c27

View File

@ -6,15 +6,19 @@ An example server can be found in go-micro/template.
## Prerequisites ## Prerequisites
Consul is the default discovery mechanism provided in go-micro. Discovery is however pluggable.
### Install Consul ### Install Consul
[https://www.consul.io/intro/getting-started/install.html](https://www.consul.io/intro/getting-started/install.html) [https://www.consul.io/intro/getting-started/install.html](https://www.consul.io/intro/getting-started/install.html)
## Getting Started
### Run Consul ### Run Consul
``` ```
$ consul agent -server -bootstrap-expect 1 -data-dir /tmp/consul $ consul agent -server -bootstrap-expect 1 -data-dir /tmp/consul
``` ```
## Run Service ### Run Service
``` ```
$ go run go-micro/template/main.go $ go run go-micro/template/main.go
@ -24,9 +28,98 @@ $ go run go-micro/template/main.go
1416690099281215346 [Debug] Registering go.micro.service.template-c0bfcb44-728a-11e4-b099-68a86d0d36b6 1416690099281215346 [Debug] Registering go.micro.service.template-c0bfcb44-728a-11e4-b099-68a86d0d36b6
``` ```
## Test Service ### Test Service
``` ```
$ go run go-micro/examples/service_client.go $ go run go-micro/examples/service_client.go
go.micro.service.template-c0bfcb44-728a-11e4-b099-68a86d0d36b6: Hello John go.micro.service.template-c0bfcb44-728a-11e4-b099-68a86d0d36b6: Hello John
``` ```
## Writing a service
### Create request/response proto
`go-micro/template/proto/example/example.proto`:
```
package go.micro.service.template.example;
message Request {
required string name = 1;
}
message Response {
required string msg = 1;
}
```
Compile proto `protoc -I$GOPATH/src --go_out=$GOPATH/src $GOPATH/src/github.com/asim/go-micro/template/proto/example/example.proto`
### Create request handler
`go-micro/template/handler/example.go`:
```
package handler
import (
"code.google.com/p/go.net/context"
"code.google.com/p/goprotobuf/proto"
"github.com/asim/go-micro/server"
example "github.com/asim/go-micro/template/proto/example"
log "github.com/cihub/seelog"
)
type Example struct{}
func (e *Example) Call(ctx context.Context, req *example.Request, rsp *example.Response) error {
log.Debug("Received Example.Call request")
rsp.Msg = proto.String(server.Id + ": Hello " + req.GetName())
return nil
}
```
### Init server
`go-micro/template/main.go`:
```
package main
import (
"log"
"github.com/asim/go-micro/server"
"github.com/asim/go-micro/template/handler"
)
func main() {
server.Name = "go.micro.service.template"
// Initialise Server
server.Init()
// Register Handlers
server.Register(
server.NewReceiver(
new(handler.Example),
),
)
// Run server
if err := server.Run(); err != nil {
log.Fatal(err)
}
}
```
### Run service
```
$ go run go-micro/template/main.go
1416690099281057746 [Debug] Rpc handler /_rpc
1416690099281092588 [Debug] Starting server go.micro.service.template id go.micro.service.template-c0bfcb44-728a-11e4-b099-68a86d0d36b6
1416690099281192941 [Debug] Listening on [::]:58264
1416690099281215346 [Debug] Registering go.micro.service.template-c0bfcb44-728a-11e4-b099-68a86d0d36b6
```