dubbo3-solon-plugin
此插件,由社区成员(浅念)贡献
<dependency>
<groupId>org.noear</groupId>
<artifactId>dubbo3-solon-plugin</artifactId>
</dependency>
1、描述
分布式扩展插件。基于 dubbo3 适配的 rpc 插件。此插件需要使用 duboo3 配套的注册与发现插件。
2、配置示例
- pom.xml 增加专属的注册与发现服务包:
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-registry-nacos</artifactId>
<version>${dubbo3.version}</version>
</dependency>
<!-- 或者 zk(nacos 与 zookeeper 二选一,或者别的注册服务包) -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-registry-zookeeper</artifactId>
<version>${dubbo3.version}</version>
</dependency>
- app.yml 增加 dubbo3 配置:
server.port: 8011
dubbo:
application:
name: hello
owner: noear
registry:
address: nacos://localhost:8848
# port default = ${server.port + 20000}
3、代码应用
- 声明接口
public interface HelloService {
String sayHello(String name);
}
- 提供者(实现接口服务)
@DubboService(group = "hello")
@EnableDubbo
public class DubboProviderApp implements HelloService{
public static void main(String[] args) {
Solon.start(DubboProviderApp.class, args);
}
@Override
public String sayHello(String name) {
return "hello, " + name;
}
}
- 消息者
@EnableDubbo
@Controller
public class DubboConsumeApp {
public static void main(String[] args) {
Solon.start(DubboConsumeApp.class, args, app -> app.enableHttp(false));
//通过手动模式直接拉取bean
DubboConsumeApp tmp = Solon.context().getBean(DubboConsumeApp.class);
System.out.println(tmp.home());
}
@DubboReference(group = "hello")
HelloService helloService;
@Mapping("/")
public String home() {
return helloService.sayHello("noear");
}
}
4、本地注册与发现配置参考
方便本地调试
dubbo:
application:
name: ${solon.app.name}
logger: slf4j
registry:
address: N/A
consumer:
scope: local
5、原生编译配置参考(未试通)
添加 dubbo-native 依赖包(提供 aot 处理实现)。dubbo-native aot 编译时还会用到 spring-context。
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-native</artifactId>
<version>${dubbo3.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>6.2.10</version>
<scope>provided</scope> <!-- 标为 provided 即可 -->
</dependency>
添加一个 profile,再添加 dubbo-maven-plugin 构建插件(对接 maven 构建处理,在 process-sources
时机点执行 dubbo-process-aot)
<profiles>
<profile>
<id>native-dubbo</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-maven-plugin</artifactId>
<version>${dubbo3.version}</version>
<configuration>
<mainClass>com.example.nativedemo.NativeDemoApplication</mainClass>
</configuration>
<executions>
<execution>
<phase>process-sources</phase>
<goals>
<goal>dubbo-process-aot</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
运行命令(细节要参考官网提供的教程及配套示例)
mvn clean native:compile -P native -P native-dubbo -DskipTests
6、代码演示
https://gitee.com/noear/solon-examples/tree/main/7.Solon-Remoting-Rpc/demo7014-rpc_dubbo3_sml