成为大佬先秃头 2025-03-28 22:09 采纳率: 0%
浏览 9

为什么Dubbo3调用SpringCloud的Feign接口一直报找不到服务?

为什么Dubbo3调用SpringCloud的Feign接口一直报找不到服务?
根据官方文档,只需要引入即可,示例代码如下
@FeignClient(name = "spring-cloud-provider-for-dubbo")
public interface UserServiceFeign {
    @RequestMapping(value="/users/list", method = RequestMethod.GET, produces = "application/json")
    List<User> users();
}
@DubboReference
private UserServiceFeign userService;
运行结果及详细报错内容

No provider available from registry RegistryDirectory(registry: 127.0.0.1:8848)-Directory(invokers: 0[], validInvokers: 0[], invokersToReconnect: 0[]) for service com.dubbo.nacos.consumer.client.EchoService on consumer 192.168.0.6 use dubbo version 3.3.0, please check status of providers(disabled, not registered or in blocklist).

使用的Nacos整合Dubbo3,对应SpringCloud服务也在Nacos上成功注册?求解?正确使用方式
  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2025-03-28 22:10
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    问题分析

    Dubbo 3 调用 SpringCloud 的 Feign 接口报找不到服务,这可能是由于 Dubbo 3 和 SpringCloud Feign 使用不同的注册中心和服务发现机制导致的。

    解决方案

    1. 确认 Dubbo 3 和 SpringCloud Feign 都使用同一个注册中心,例如 Eureka 或 Consul。
    2. 在 Dubbo 3 服务提供者中,添加 Feign 客户端的配置,例如:
    @FeignClient(name = "spring-cloud-prov", url = "http://localhost:8080")
    public interface MyService {
        // ...
    }
    
    1. 在 Dubbo 3 服务消费者中,添加 Feign 客户端的配置,例如:
    @FeignClient(name = "spring-cloud-prov")
    public interface MyService {
        // ...
    }
    
    1. 确认 Dubbo 3 服务提供者已经注册到注册中心,并且 Feign 客户端可以正确地发现服务。
    2. 如果仍然报找不到服务,可以尝试使用 Dubbo 3 的 @Reference 注解来引用 Feign 客户端,例如:
    @Reference(version = "v1.0", url = "http://localhost:8080")
    private MyService myService;
    

    代码示例

    以下是一个简单的示例代码,演示 Dubbo 3 调用 SpringCloud Feign 接口:

    // Dubbo 3 服务提供者
    @DubboService(version = "v1.0", url = "http://localhost:8080")
    public class MyService {
        public String sayHello(String name) {
            return "Hello, " + name + "!";
        }
    }
    
    // SpringCloud Feign 客户端
    @FeignClient(name = "spring-cloud-prov", url = "http://localhost:8080")
    public interface MyService {
        String sayHello(String name);
    }
    
    // Dubbo 3 服务消费者
    @DubboReference(version = "v1.0", url = "http://localhost:8080")
    private MyService myService;
    
    public String consume() {
        return myService.sayHello("world");
    }
    

    结论

    Dubbo 3 调用 SpringCloud Feign 接口报找不到服务可能是由于注册中心和服务发现机制不一致导致的。通过添加 Feign 客户端的配置和使用 Dubbo 3 的 @Reference 注解,可以解决这个问题。

    评论

报告相同问题?

问题事件

  • 修改了问题 3月28日
  • 创建了问题 3月28日