examples/

directory
v0.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 9, 2019 License: Apache-2.0

README

dubbogo examples


***a golang apache dubbo code example. just using jsonrpc 2.0 protocol over http now.***

Introduction

examples是基于dubbogo的实现的代码示例,目前提供user-info一个例子。examples/client 是一个 go client,借鉴java的编译思路,提供了区别于一般的go程序的而类似于java的独特的编译脚本系统。

Code Example

1: user-info

从这个程序可以看出dubbogo client程序(user-info/client) 如何调用 java(dubbo) server的程序( user-info/java-server)的。

Attention: 测试的时候一定注意修改配置文件中服务端和zk的ip&port。

  • 1 部署zookeeper服务;

  • 2 请编译并部署 examples/java-server,注意修改zk地址(conf/dubbo.properties:line6:"dubbo.registry.address")和监听端口(conf/dubbo.properties:line6:"dubbo.protocol.port", 不建议修改port), 然后执行"bin/start.sh"启动java服务端;

  • 3 修改 examples/client/profiles/test/client.toml:line 31,写入正确的zk地址;

  • 4 examples/client/ 下执行 sh assembly/mac/dev.sh命令(linux下请执行sh assembly/linux/dev.sh)

    target/darwin 下即放置好了编译好的程序以及打包结果,在 client/target/darwin/user_info_client-0.2.0-20180808-1258-dev 下执行sh bin/load.sh start命令即可客户端程序;

QA List

1 Unsupported protocol jsonrpc

问题描述: 用java写的dubbo provider端程序如果遇到下面的错误:

 java.lang.IllegalStateException: Unsupported protocol jsonrpc in notified url:   

 jsonrpc://116.211.15.189:8080/im.ikurento.user.UserProvider?anyhost=true&application=token-dubbo-p&default.threads=100&dubbo=2.5.3…

 from registry 116.211.15.190:2181 to consumer 10.241.19.54, supported protocol: [dubbo, http, injvm, mock, redis, registry, rmi, thrift]

错误原因:provider端声明使用了jsonrpc,所以所有的协议都默认支持了jsonrpc协议。

解决方法:服务需要在dubbo.provider.xml中明确支持dubbo协议,请在reference中添加protocol="dubbo",如:

<dubbo:protocol name="dubbo" port="28881" />
<dubbo:protocol name="jsonrpc" port="38881" server="jetty" />
<dubbo:service id="userService" interface="im.ikurento.user.UserProvider" check="false" timeout="5000" protocol="dubbo"/>

<dubbo:service id="userService" interface="im.ikurento.user.UserProvider" check="false" timeout="5000" protocol="jsonrpc"/>

与本问题无关,补充一些消费端的配置:

<dubbo:reference id="userService" interface="im.ikurento.user.UserService" connections="2" check="false">
	<dubbo:method name="GetUser" async="true" return="false" />
</dubbo:reference>
2 配置文件

dubbogo client端根据其配置文件client.toml的serviceList来watch zookeeper上相关服务,否则当相关服务的zk provider path下的node发生增删的时候,因为关注的service不正确而导致不能收到相应的通知。

所以务必注意这个配置文件中的serviceList与实际代码中相关类的Service函数提供的Service一致。

3 其他注意事项
  • a. dubbo 可以配置多个 zk 地址;
  • b. 消费者在 dubbo 的配置文件中相关interface配置务必指定protocol, 如protocol="dubbo";
  • c. java dubbo provider提供服务的method如果要提供给dubbogo client服务,则method的首字母必须大写;

Directories

Path Synopsis
go-client
app
go-server
app

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL