From 0710a0f3d2b931210be70d4dc472d718cda24b0d Mon Sep 17 00:00:00 2001 From: George Hemmings Date: Wed, 25 Apr 2018 12:38:06 +0100 Subject: [PATCH] Fix mismatch between Client and Server queue names The client is removing the MQ prefix from the QueueName before creating the connection. The server doesn't do this, therefore they are listening and sending to different queues. If no prefix is wanted this can be configured by setting QueueNames.MqPrefix to an empty string. Therefore I see no reason to always remove the MqPrefix. --- .../Messaging/ServiceBusMqMessageFactory.cs | 3 --- .../Messaging/ServiceBusMqMessageProducer.cs | 3 --- .../Messaging/MqServerAppHostTests.cs | 8 +++++--- 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/ServiceStack.Azure/Messaging/ServiceBusMqMessageFactory.cs b/src/ServiceStack.Azure/Messaging/ServiceBusMqMessageFactory.cs index bc10428..44a82cd 100644 --- a/src/ServiceStack.Azure/Messaging/ServiceBusMqMessageFactory.cs +++ b/src/ServiceStack.Azure/Messaging/ServiceBusMqMessageFactory.cs @@ -120,9 +120,6 @@ protected internal void StopQueues() protected internal QueueClient GetOrCreateClient(string queueName) { - if (queueName.StartsWith(QueueNames.MqPrefix)) - queueName = queueName.ReplaceFirst(QueueNames.MqPrefix, ""); - if (sbClients.ContainsKey(queueName)) return sbClients[queueName]; diff --git a/src/ServiceStack.Azure/Messaging/ServiceBusMqMessageProducer.cs b/src/ServiceStack.Azure/Messaging/ServiceBusMqMessageProducer.cs index 2f43d2c..93b9077 100644 --- a/src/ServiceStack.Azure/Messaging/ServiceBusMqMessageProducer.cs +++ b/src/ServiceStack.Azure/Messaging/ServiceBusMqMessageProducer.cs @@ -75,9 +75,6 @@ public virtual void Publish(string queueName, IMessage message) #if NETSTANDARD2_0 protected MessageReceiver GetOrCreateMessageReceiver(string queueName) { - if (queueName.StartsWith(QueueNames.MqPrefix)) - queueName = queueName.ReplaceFirst(QueueNames.MqPrefix, ""); - if (sbReceivers.ContainsKey(queueName)) return sbReceivers[queueName]; diff --git a/tests/ServiceStack.Azure.Tests/Messaging/MqServerAppHostTests.cs b/tests/ServiceStack.Azure.Tests/Messaging/MqServerAppHostTests.cs index 6fe2bbb..121ed35 100644 --- a/tests/ServiceStack.Azure.Tests/Messaging/MqServerAppHostTests.cs +++ b/tests/ServiceStack.Azure.Tests/Messaging/MqServerAppHostTests.cs @@ -203,6 +203,8 @@ public abstract class MqServerAppHostTests [OneTimeSetUp] public void OneTimeSetUp() { + QueueNames.MqPrefix = "mq."; // mq: is not valid in Azure Service Bus Queue Names + appHost = new MqTestsAppHost(() => CreateMqServer()) .Init() .Start(ListeningOn); @@ -363,7 +365,7 @@ public void Does_execute_ReplyTo_validation_filters() { var requestMsg = new Message(request) { - ReplyTo = "mq:{0}.replyto".Fmt(request.GetType().Name) + ReplyTo = "{0}{1}.replyto".Fmt(QueueNames.MqPrefix, request.GetType().Name) }; mqProducer.Publish(requestMsg); @@ -375,7 +377,7 @@ public void Does_execute_ReplyTo_validation_filters() request = new ValidateTestMq { Id = 10 }; requestMsg = new Message(request) { - ReplyTo = "mq:{0}.replyto".Fmt(request.GetType().Name) + ReplyTo = "{0}{1}.replyto".Fmt(QueueNames.MqPrefix, request.GetType().Name) }; mqProducer.Publish(requestMsg); var responseMsg = mqClient.Get(requestMsg.ReplyTo, null); @@ -397,7 +399,7 @@ public void Does_handle_ReplyTo_generic_errors() { var requestMsg = new Message(request) { - ReplyTo = "mq:{0}.replyto".Fmt(request.GetType().Name) + ReplyTo = "{0}{1}.replyto".Fmt(QueueNames.MqPrefix, request.GetType().Name) }; mqProducer.Publish(requestMsg);