

GitHub - apache/dubbo-samples: samples for Apache Dubbo
source link: https://github.com/apache/dubbo-samples
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

README.md
Dubbo Samples
Samples for Apache Dubbo
This repository contains a number of projects to illustrate various usages of Dubbo from basic to advanced, pls. check README in each individual sub projects. It is also helpful to cross reference to Dubbo User Manual to understand the features demoed in this project.
Build and Run Samples
To compile all samples, run the following command in the top directory of this project, or step into the sub directories to compile one single sample:
mvn clean package
You may need to read each individual README under the sub directories if it has to understand how to build and run.
Integration Test
This project is also used for integration test for dubbo.
How to build and run a integration test
Most of integration tests will reply on a home-brew maven plugin to perform correctly when dubbo service is deployed in docker environment. This maven plugin is provided in 'dubbo-maven-address-plugin' module and should be installed before running any integration test:
cd dubbo-maven-address-plugin
mvn clean install
It is as simple as stepping into a sub directory and then executing the following command, for example:
cd dubbo-samples-annotation
mvn -Pdubbo-integration-test clean verify
If docker container fails to startup successfully in any case, you can use -Ddocker.showLogs to check its logging output to understand what happens.
mvn -Ddocker.showLogs -Pdubbo-integration-test clean verify
Pls. note integration test relies on docker environment, make sure docker environment is available before run it.
How to add more integration test
If you are interested in contributing more integration test for dubbo, pls. read further to understand how to enable integration test for one particular sample from the scratch.
- Related maven properties relevant to integration test:
<spring.version>4.3.16.RELEASE</spring.version> <junit.version>4.12</junit.version> <docker-maven-plugin.version>0.30.0</docker-maven-plugin.version> <jib-maven-plugin.version>1.2.0</jib-maven-plugin.version> <maven-failsafe-plugin.version>2.21.0</maven-failsafe-plugin.version> <image.name>${artifactId}:${dubbo.version}</image.name> <dubbo.port>20880</dubbo.port> <main-class>org.apache.dubbo.samples.attachment.AttachmentProvider</main-class>
Integration test leverages docker to setup test environment, more accurately, to start dubbo provider instance, and any other supporting systems like registry center if necessary, in docker. Therefore, there are two maven plugins required for composing docker image and start-and-stop the docker instances before-and-after the integration test: 1. jib-maven-plugin from google 2. docker-maven-plugin from fabric8.
- Configure maven profile:
Since we use profile 'dubbo-integration-test' to enable integration test, make sure the following plugins are configured under the desire profile, which is 'dubbo-integration-test':
<profiles> <profile> <id>dubbo-integration-test</id> <build> <plugins><!-- declare maven plugins here --></plugins> </build> </profile> </profiles>
- Configure dubbo-maven-address-plugin
<plugin> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-maven-address-plugin</artifactId> <version>1.0-SNAPSHOT</version> <executions> <execution> <goals> <goal>local-address</goal> </goals> <configuration> <localAddress>dubbo-local-address</localAddress> </configuration> <phase>initialize</phase> </execution> </executions> </plugin>
'dubbo-local-address' is a maven property in which dubbo provider's IP address is stored.
- Configure jib-maven-plugin
<plugin> <groupId>com.google.cloud.tools</groupId> <artifactId>jib-maven-plugin</artifactId> <version>${jib-maven-plugin.version}</version> <configuration> <from> <image>${java-image.name}</image> </from> <to> <image>${image.name}</image> </to> <container> <mainClass>${main-class}</mainClass> <ports> <port>${dubbo.port}</port> <!-- dubbo provider's port --> <port>2181</port> <!-- zookeeper's port --> </ports> <environment> <DUBBO_IP_TO_REGISTRY>${dubbo-local-address}</DUBBO_IP_TO_REGISTRY> </environment> </container> </configuration> <executions> <execution> <phase>package</phase> <goals> <goal>dockerBuild</goal> </goals> </execution> </executions> </plugin>
'<DUBBO_IP_TO_REGISTRY>' is an environment variable to instruct dubbo provider the IP address used for registering to service registration center. Since the dubbo provider will run within a docker instance, a host's IP address (detected from dubbo-maven-address-plugin) must be used in order to allow it discovered by the dubbo client running outside docker instance.
- Configure docker-maven-plugin
<plugin> <groupId>io.fabric8</groupId> <artifactId>docker-maven-plugin</artifactId> <version>${docker-maven-plugin.version}</version> <configuration> <images> <image> <name>${image.name}</name> <run> <ports> <port>${dubbo.port}:${dubbo.port}</port> <!-- expose dubbo port --> <port>2181:2181</port> <!-- expose zookeeper port --> </ports> <wait> <!-- wait until the message output in stdout, and it requires dubbo's provider explicitly prints out this message at the very end of main() --> <log>dubbo service started</log> </wait> </run> </image> </images> </configuration> <executions> <execution> <id>start</id> <phase>pre-integration-test</phase> <goals> <goal>start</goal> </goals> </execution> <execution> <id>stop</id> <phase>post-integration-test</phase> <goals> <goal>stop</goal> </goals> </execution> </executions> </plugin>
'docker-maven-plugin' will start the specified docker image before integration test (phase 'pre-integration-test') and stop it after integration test (phase 'post-integration-test').
- Configure maven-failsafe-plugin
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-failsafe-plugin</artifactId> <version>${maven-failsafe-plugin.version}</version> <executions> <execution> <goals> <goal>integration-test</goal> <goal>verify</goal> </goals> <configuration> <includes> <include>**/*IT.java</include> </includes> </configuration> </execution> </executions> </plugin>
A integration test is basically a JUnit based test class, but with its name suffixed by 'IT'.
That's it, then feel free to add more integration test for the Dubbo project. You may need to refer to 'dubbo-samples-annotation' or 'dubbo-samples-attachment' for more details, have fun.
Recommend
-
39
README.md Go for Apache Dubbo 中文
-
44
README.md Go for Apache Dubbo 中文
-
74
分享嘉宾:秦金卫 火币集团 编辑整理: Hoh Xil 内容来源:大数据开源技术论坛 · 01 ...
-
26
Apache Dubbo 简单介绍 Apache Dubbo 是一款开源的 RPC(Remote Procedure Call,远程过程调用)框架,其提供了简单易用、高性能的 RPC 能力、灵活可控的扩展、强大的服务治理、完善的开源生态支持,目前已有 Java、Go、JS、Py...
-
456
Apache Dubbo HTTP协议中的一个反序列化漏洞(CVE-2019-17564) 漏洞描述 Apache Dubbo支持多种协议,官方推荐使用Dubbo协议。Apache Dubbo HTTP协议中的一个反序列化漏洞(CVE-2019-17564),该漏洞的主要原因在于当A...
-
15
0x01 漏洞描述dubbo于2020年6月22日更新了一个 hessian2 反序列化的漏洞,影响版本: 123Dubbo 2.7.0 to 2.7.6Dubbo 2.6.0 to 2.6.7Dubbo all 2.5.x versions (not supported by...
-
18
Spring 扩展点实践:整合 Apache Dubbo(二) 2020-07-11
-
14
Spring 扩展点实践:整合 Apache Dubbo(一) 2020-07-09 在上...
-
12
一、SPI SPI全称为Service Provider Interface,对应中文为服务发现机制。SPI类似一种可插拔机制,首先需要定义一个接口或一个约定,然后不同的场景可以对其进行实现,调用方在使用的时候无需过多关注具体的实现细节。在Java中,SPI...
-
3
Apache Dubbo 3.0.0 正式发布 自从 Apache Dubbo 在 2011 年开源以来,在一众大规模互联网、IT公司的实践中积累了大量经验后,Dubbo 凭借对 Java 用户友好、功能丰富、治理能力强等优点在过去取得了很大的成功,成为国内外热门主流的 RPC 框架之一。
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK