diff --git a/client/src/main/java/org/apache/rocketmq/client/ClientConfig.java b/client/src/main/java/org/apache/rocketmq/client/ClientConfig.java index 9e012254329..d7db54e96c7 100644 --- a/client/src/main/java/org/apache/rocketmq/client/ClientConfig.java +++ b/client/src/main/java/org/apache/rocketmq/client/ClientConfig.java @@ -414,6 +414,10 @@ public String getNamespace() { return namespace; } + if (StringUtils.isNotEmpty(namespaceV2)) { + return namespaceV2; + } + if (StringUtils.isNotEmpty(this.namesrvAddr)) { if (NameServerAddressUtils.validateInstanceEndpoint(namesrvAddr)) { namespace = NameServerAddressUtils.parseInstanceIdFromEndpoint(namesrvAddr); diff --git a/client/src/test/java/org/apache/rocketmq/client/ClientConfigTest.java b/client/src/test/java/org/apache/rocketmq/client/ClientConfigTest.java index 5afe9cc011d..89bcf7a7d38 100644 --- a/client/src/test/java/org/apache/rocketmq/client/ClientConfigTest.java +++ b/client/src/test/java/org/apache/rocketmq/client/ClientConfigTest.java @@ -65,6 +65,38 @@ public void testQueuesWithNamespace() { assertEquals("lmq%defaultTopic", messageQueues.iterator().next().getTopic()); } + @Test + public void testGetNamespaceFallbackToNamespaceV2() { + ClientConfig config = new ClientConfig(); + config.setNamespaceV2("InstanceTest"); + assertEquals("InstanceTest", config.getNamespace()); + } + + @Test + public void testWithNamespaceUsesNamespaceV2() { + ClientConfig config = new ClientConfig(); + config.setNamespaceV2("InstanceTest"); + assertEquals("InstanceTest%resource", config.withNamespace(resource)); + assertEquals("InstanceTest%resource", + config.withNamespace("InstanceTest%resource")); + } + + @Test + public void testWithoutNamespaceUsesNamespaceV2() { + ClientConfig config = new ClientConfig(); + config.setNamespaceV2("InstanceTest"); + assertEquals(resource, config.withoutNamespace("InstanceTest%resource")); + } + + @Test + public void testNamespaceV1PrecedesNamespaceV2() { + ClientConfig config = new ClientConfig(); + config.setNamespace("lmq"); + config.setNamespaceV2("InstanceTest"); + assertEquals("lmq", config.getNamespace()); + assertEquals("lmq%resource", config.withNamespace(resource)); + } + private ClientConfig createClientConfig() { ClientConfig result = new ClientConfig(); result.setUnitName("unitName");