Gateway 转发 dubbo协议的问题
老师,我在通过gateway请求 dubbo的provider, 总是提示在nacos上找不到注册信息,
但是nacos是能找到的, 不然 test case 不会通过, debug 过程中的记录没有问题
下面给出打印出来的log和error信息, 以及 nacos信息:
2025-11-28 18:52:47.584 INFO 22844 --- [nio-6101-exec-5] c.m.b.g.f.HttpRequestToDubboInvokeFilter : dobbuUri: org.cy.micoservice.blog.user.facade.interfaces.UserFacade, dobbUriArray: queryUserById
2025-11-28 18:52:47.621 ERROR 22844 --- [nio-6101-exec-5] a.w.r.e.AbstractErrorWebExceptionHandler : [338e7c9e] 500 Server Error for HTTP GET "/api/test/dubbo/user"
org.apache.dubbo.rpc.RpcException: No provider available from registry 192.168.9.200:8848 for service org.cy.micoservice.blog.user.facade.interfaces.UserFacade on consumer 198.18.0.1 use dubbo version 3.2.0, please check status of providers(disabled, not registered or in blacklist).
at org.apache.dubbo.registry.integration.DynamicDirectory.doList(DynamicDirectory.java:199) ~[dubbo-3.2.0.jar:3.2.0]
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
Error has been observed at the following site(s):
*__checkpoint ⇢ org.springframework.cloud.gateway.filter.WeightCalculatorWebFilter [DefaultWebFilterChain]
*__checkpoint ⇢ HTTP GET "/api/test/dubbo/user" [ExceptionHandlingWebHandler]


但是test case 能通过, 也能返回值:
问题二: DubboInvokeService 中的 save() 方法: 在启动gateway也是类似的错误, 查了资料说 需要 referenceConfig.setCheck(false); 这样 referenceConfig.get(); 方法不会立即触发校验Facade 是否在nacos注册, 但是感觉治标不治本
@Override
public boolean save(String uri) {
if (StringUtils.isBlank(uri)) return false;
log.info("dubbo uri: {}", uri);
ReferenceConfig<GenericService> referenceConfig = new ReferenceConfig<>();
referenceConfig.setRegistry(registryConfig);
// 开启泛化调用
referenceConfig.setGeneric(true);
referenceConfig.setApplication(applicationConfig);
referenceConfig.setInterface(uri);
// 不立即检查Facade是否存在
referenceConfig.setCheck(false);
GenericService genericService = referenceConfig.get();
referenceConfigMap.put(uri, genericService);
return true;
}
5
收起
正在回答
2回答
一般nacos上找不到方法 可能是dubbo配置nacos地址的时候 账号密码 组别 命名空间这些有出入导致的。
Danny_Idea
5天前
问题二其实应该要设置为check为false 因为网关作为一个中台服务 不应该前依赖于下游业务服务,即使下游服务挂了,也不应该影响网关这边的其他运作。
相似问题
登录后可查看更多问答,登录/注册
Java+大数据+AI架构师实战营
- 参与学习 55 人
专为1–5年开发者,打造极具竞争力的人才培养方案,快速突破技术/职业瓶颈 “三高”架构稳态托底,海量数据秒级吞吐,实时计算,AI智能化融合 大型 “社交+电商” 平台从0到1全程贯穿,高复杂架构落地
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星