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