It does sound like a bug, we should merge consumer's configuration instead
of creating two consumer beans. Would you mind to remove 'id' from
<dubbo:consumer /> and give it a try?

I also filed an issue[1] to track it.

Thanks,
-Ian.

1. https://github.com/apache/incubator-dubbo/issues/3618



On Thu, Mar 7, 2019 at 5:09 PM [email protected] <[email protected]>
wrote:

> Hi,
>     Every one.
>     I use dubbo spring-boot with
>
> <dependency>
>     <groupId>com.alibaba.boot</groupId>
>     <artifactId>dubbo-spring-boot-starter</artifactId>
>     <version>0.2.0</version>
> </dependency>
>
> And in order to decouple with dubbo .
> I do not use  @Service (com.alibaba.dubbo.config.annotation.Service)
>  annotation on my serviceImpl class , but add @Component annotation to
> them.
> Then I config the service and refrence in another two xml file as
>
> <dubbo:service 
> interface="com.ecms.ecframe.auth.service.EcAuthMenuI18nService" 
> ref="ecAuthMenuI18nServiceImpl" version="0.5.0" protocol="dubbo" 
> timeout="5000"></dubbo:service>
>
>
> <dubbo:reference xmlns="" 
> interface="com.ecms.ecframe.auth.service.EcAuthMenuI18nService" 
> version="0.5.0" id="ecAuthMenuI18n"></dubbo:reference>
>
>
> to regist the bean to zookeeper as a service.
> Finally I use
> @ImportResource(locations = {"classpath:META-INF/dubbo/provider.xml"}) on
> the bootstrap class of my springboot application.
> Then it works.
>
>
>
> But when I config the consumer , a problem happened.
> In my application.properties I set a property as
>
> dubbo.consumer.check=false
>
> to skip the exist check of provider
> and I need a filter to do some work before a RPC request send,so I
> configed a filter on my xml file
>
> <dubbo:consumer filter="UserConsumerFilter"/>
>
> when the application start
>
> 2019-03-07 15:23:14.672  WARN 4116 --- [           main] 
> o.s.b.f.s.DefaultListableBeanFactory     : Bean creation exception on 
> non-lazy FactoryBean type check: 
> org.springframework.beans.factory.BeanCreationException:
>  Error creating bean with name 'ecAuthMenuI18n': Invocation of init method 
> failed; nested exception is java.lang.IllegalStateException:
>  Duplicate consumer configs: <dubbo:consumer generic="false" 
> filter="UserConsumerFilter" id="com.alibaba.dubbo.config.ConsumerConfig" /> 
> and <dubbo:consumer generic="false" />
>
> I think the first tag is from the xml and the secod tag is from the
> application.properties.
>
> then I try to add a id parameter on my xml file like
> <dubbo:consumer filter="UserConsumerFilter" id="aaa"/>
>
> the warn info is :
> 2019-03-07 16:56:32.498  WARN 6504 --- [           main] 
> o.s.b.f.s.DefaultListableBeanFactory     : Bean creation exception on 
> non-lazy FactoryBean type check: 
> org.springframework.beans.factory.BeanCreationException:
>  Error creating bean with name 'ecAuthMenuI18n': Invocation of init method 
> failed; nested exception is java.lang.IllegalStateException:
>  Duplicate consumer configs: <dubbo:consumer generic="false" 
> filter="UserConsumerFilter" id="aaa" /> and <dubbo:consumer generic="false" />
>
> So I think dubbo can only config one <dubbo:consumer > in a context.
>
> Can we consider to imporve this in the future ?
>
> -----------------------------------------------------------------------------------------------------------------------------------------------------------
>
> 我们在使用dubbo的过程中,希望可以很容易的在rpc模式和本地模式之间切换,所以并没有使用dubbo的@service注解和@refrence注解。而是使用@component注解将service的实现类注册到spring
> 再用额外的xml分别定义dubbo的service和refrence
>
> <dubbo:service 
> interface="com.ecms.ecframe.auth.service.EcAuthMenuI18nService" 
> ref="ecAuthMenuI18nServiceImpl" version="0.5.0" protocol="dubbo" 
> timeout="5000"></dubbo:service>
>
>
> <dubbo:reference xmlns="" 
> interface="com.ecms.ecframe.auth.service.EcAuthMenuI18nService" 
> version="0.5.0" id="ecAuthMenuI18n"></dubbo:reference>
>
> 在springboot的启动类中分别引入consumer和provider的xml配置。
> 现在我需要在consumer端加一个filter,于是,我在xml中增加了
>
> <dubbo:consumer filter="UserConsumerFilter"/>
>
> 由于原来在application.properties中指定了
> dubbo.consumer.check=false
>
> 启动报错:
>
> 2019-03-07 15:23:14.672  WARN 4116 --- [           main] 
> o.s.b.f.s.DefaultListableBeanFactory     : Bean creation exception on 
> non-lazy FactoryBean type check: 
> org.springframework.beans.factory.BeanCreationException:
>  Error creating bean with name 'ecAuthMenuI18n': Invocation of init method 
> failed; nested exception is java.lang.IllegalStateException:
>  Duplicate consumer configs: <dubbo:consumer generic="false" 
> filter="UserConsumerFilter" id="com.alibaba.dubbo.config.ConsumerConfig" /> 
> and <dubbo:consumer generic="false" />
>
> xml中的标签加了个id
> <dubbo:consumer filter="UserConsumerFilter" id="aaa"/>
> 报错:
> 2019-03-07 16:56:32.498  WARN 6504 --- [           main] 
> o.s.b.f.s.DefaultListableBeanFactory     : Bean creation exception on 
> non-lazy FactoryBean type check: 
> org.springframework.beans.factory.BeanCreationException:
>  Error creating bean with name 'ecAuthMenuI18n': Invocation of init method 
> failed; nested exception is java.lang.IllegalStateException:
>  Duplicate consumer configs: <dubbo:consumer generic="false" 
> filter="UserConsumerFilter" id="aaa" /> and <dubbo:consumer generic="false" />
>
>
> 我想这个是由于dubbo只能接受一个<dubbo:consumer />配置的原因吗?
> 这个是否能够作为一个issue提出来,后续加以改进呢?
>
> 谢谢。
> ------------------------------
> 您的朋友:刘志广
>
>
>

Reply via email to