dubbo Duplicate consumer configs或Duplicate provider configs問題解決

新項目中使用了2.7.3 的版本

報錯如下

Caused by: java.lang.IllegalStateException: Duplicate provider configs: <dubbo:provider timeout="3000" retries="0" filter="providerTraceFilter" dynamic="true" version="1.0.0" register="true" group="zybprod" deprecated="false" id="org.apache.dubbo.config.ProviderConfig" prefix="dubbo.provider" valid="true" /> and <dubbo:provider path="dev1" contextpath="dev1" dynamic="true" register="true" deprecated="false" prefix="dubbo.provider" valid="true" />
	at org.apache.dubbo.config.spring.ServiceBean.afterPropertiesSet(ServiceBean.java:141)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1855)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1792)
	... 65 common frames omitted

分析原因:
其實Duplicate provider configs 提示的很明確了,關鍵是要找出重複的配置在哪裏

  1. xml中有一個provider的配置
    <dubbo:provider filter="providerTraceFilter" version="1.0.0"
                    group="group11" retries="0"
                    timeout="3000"/>
  1. 由於項目是springboot啓動的,加了@EnableDubbo(scanBasePackages = "com.XX.XXX")
    EnableDubbo 的註解如下,其中包含了@EnableDubboConfig自動配置,當在application.properties 中或系統參數中配置了dubbo的配置時就會生成dubbo對應的配置
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
@EnableDubboConfig
@DubboComponentScan
public @interface EnableDubbo {

我是開發時配置啓動參數,所以會有個一個provider的配置
在這裏插入圖片描述

這樣項目中就有兩個dubbo provider的配置,找到重複的點就好解決了。
將xml中的配置刪除掉,在application.properties文件中進行配置provider

dubbo.provider.filter=providerTraceFilter
dubbo.provider.version=1.0.0
dubbo.provider.group=group11
dubbo.provider.retries=0
dubbo.provider.timeout=3000

這樣即使vm 選項中配置了-Ddubbo.provider.path=dev1 啓動也不會報配置重複的問題了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章