tree: a830bb7af75f0d9f2c6ecf2fa3505ed196d6a8ec [path history] [tgz]
  1. go-client/
  2. go-server/
  3. README.md
  4. README_zh.md
helloworld/README.md

Hello World Example

Configuration

registy config

# registry config
registries:
  "demoZk":
    protocol: "zookeeper"
    timeout: "3s"
    address: "127.0.0.1:2181"

provider config

# service config
services:
  # Reference ID
  "UserProvider":
    registry: "demoZk"
    protocol: "dubbo"
    interface: "org.apache.dubbo.UserProvider"
    cluster: "failover"
    methods:
      - name: "GetUser"
        retries: 1

consumer config

# reference config
references:
  # Reference ID
  "UserProvider":
    registry: "demoZk"
    protocol: "dubbo"
    interface: "org.apache.dubbo.UserProvider"
    cluster: "failover"
    methods:
      - name: "GetUser"
        retries: 3

Code

provider

// init 
func init() {
	config.SetProviderService(new(UserProvider))
	// ------for hessian2------
	hessian.RegisterPOJO(&User{})
}

// define dto
type User struct {
	ID   string
	Name string
	Age  int32
	Time time.Time
}

// implement POJO interface for hessian2
func (u User) JavaClassName() string {
	return "org.apache.dubbo.User"
}

// service define
type UserProvider struct {
}

// interface define
func (u *UserProvider) GetUser(ctx context.Context, req []interface{}) (*User, error) {
	//biz code...
}

// implement RPCService interface
func (u *UserProvider) Reference() string {
	return "UserProvider"
}

consumer

var userProvider = new(pkg.UserProvider)

// init 
func init() {
	config.SetConsumerService(userProvider)
	hessian.RegisterPOJO(&pkg.User{})
}

// define dto
type User struct {
	ID   string
	Name string
	Age  int32
	Time time.Time
}

// implement POJO interface for hessian2
func (u User) JavaClassName() string {
	return "org.apache.dubbo.User"
}

// service define
type UserProvider struct {
    GetUser func(ctx context.Context, req []interface{}, rsp *User) error
}

// implement RPCService interface
func (u *UserProvider) Reference() string {
	return "UserProvider"
}

func main() {
    //dubbogo init
    config.Load()
    time.Sleep(3 * time.Second)
    
    user := &pkg.User{}
    err := userProvider.GetUser(context.TODO(), []interface{}{"A001"}, user)
    if err != nil {
        //...
    }
    gxlog.CInfo("response result: %v\n", user)
}