dubbo获取本服务提供的生产者,消费者等信息
需求场景描述:dubbo服务启动时需要将当前应用提供的dubbo服务上报出去。所以需要一个获取所有当前服务中所有dubbo服务的功能。所以现在大概两步走就行了翻看dubbo代码时发现一个类,包含所需要的信息。ServiceRepository 这个类主要的三个属性2.2 发送上报上报功能没什么可写的。这里就记录一下的运行时间点,我这用的是监听DubboBootstrapStartedEvent事件
·
dubbo获取本服务提供的生产者,消费者等信息
1 场景描述
需求场景描述:dubbo服务启动时需要将当前应用提供的dubbo服务上报出去。所以需要一个获取所有当前服务中所有dubbo服务的功能。
所以现在大概两步走就行了
- 1 获取当前应用所有的dubbo服务信息
- 2 发送上报
2 实现功能
2.1获取当前应用所有的dubbo服务信息
翻看dubbo代码时发现一个类,包含所需要的信息。
ServiceRepository serviceRepository = ApplicationModel.getServiceRepository();
// 当前应用提供的dubbo服务信息(所有dubbo服务生产者)
List<ProviderModel> exportedServices = serviceRepository.getExportedServices();
// 当前应用所有的dubbo消费者
List<ConsumerModel> referredServices = serviceRepository.getReferredServices();
ServiceRepository 这个类主要的三个属性
public class ServiceRepository extends LifecycleAdapter implements FrameworkExt {
public static final String NAME = "repository";
// services
private ConcurrentMap<String, ServiceDescriptor> services = new ConcurrentHashMap<>();
// 包含了当前服务提供的consumers
private ConcurrentMap<String, ConsumerModel> consumers = new ConcurrentHashMap<>();
// 包含了当前服务提供的provider
private ConcurrentMap<String, ProviderModel> providers = new ConcurrentHashMap<>();
// 和providers类似,只是key略有不同
private ConcurrentMap<String, ProviderModel> providersWithoutGroup = new ConcurrentHashMap<>();
2.2 发送上报
上报功能没什么可写的。这里就记录一下的运行时间点,我这用的是监听DubboBootstrapStartedEvent事件,在监听实践中使用2.1的代码获取所有信息。
更多推荐
已为社区贡献4条内容
所有评论(0)