dubbo TagRouter does not work with dubbo:parameter #3875
Closed
Description
- I have searched the issues of this repository and believe that this is not a duplicate.
- I have checked the FAQ of this repository and believe that this is not a duplicate.
Environment
- Dubbo version: 2.7.1
- Operating System version: win10
- Java version: jdk1.8.0_101
Steps to reproduce this issue
- 使用 dubbo-demo-xml 项目,或者其他测试项目
- 启动两个provider示例,一个在
<dubbo:service/>
中加上tag="groupA"
我们叫他p1
,另一个不加tag 我们叫他p2
. - 在
<dubbo:reference>
标签中添加<dubbo:parameter key="dubbo.tag" value="groupA"/>
之后将consumer 示例启动
- use dubbo-demo-xml, or other demo .
- prepare two providers, one set
tag="groupA"
at<dubbo:service/>
calledp1
, another with no tag calledp2
. start them. - start a consumer instance ,after set
<dubbo:parameter key="dubbo.tag" value="groupA"/>
inside of<dubbo:reference>
.
Expected Result
因为拥有相同的tag声明,consumer本应该会调用到p1
示例.
consumer would connect p1
because of the same tag definition
Actual Result
但consumer依然可能连接到p2
示例.
consumer also connects p2
.
如果把 步骤3 的标签改为在调用代码中使用RpcContext.getContext().setAttachment("dubbo.tag","groupA")
,是可以正常工作的。请问这两种方式有什么区别呢?
通过分析源码发现 在 RegistryDiscovery 中将consumer 端的parameter 整合到providerUrl 中。 请问为什么需要这步操作?