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/> called p1 , another with no tag called p2. 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 中。 请问为什么需要这步操作?
Environment
Steps to reproduce this issue
<dubbo:service/>中加上tag="groupA"我们叫他p1,另一个不加tag 我们叫他p2.<dubbo:reference>标签中添加<dubbo:parameter key="dubbo.tag" value="groupA"/>之后将consumer 示例启动tag="groupA"at<dubbo:service/>calledp1, another with no tag calledp2. start them.<dubbo:parameter key="dubbo.tag" value="groupA"/>inside of<dubbo:reference>.Expected Result
因为拥有相同的tag声明,consumer本应该会调用到
p1示例.consumer would connect
p1because of the same tag definitionActual Result
但consumer依然可能连接到
p2示例.consumer also connects
p2.如果把 步骤3 的标签改为在调用代码中使用
RpcContext.getContext().setAttachment("dubbo.tag","groupA"),是可以正常工作的。请问这两种方式有什么区别呢?通过分析源码发现 在 RegistryDiscovery 中将consumer 端的parameter 整合到providerUrl 中。 请问为什么需要这步操作?