从死信队列克隆的服务总线不起作用

Service Bus Clone from Dead Letter Queue Not Working

我正在尝试从服务总线死信队列中获取一条消息,克隆它并将其发送回原始队列。我正在使用克隆方法,然后在使用 SendAsync 将其发回之前从用户属性中删除死信原因。

我注意到两个问题——当我从新的、克隆的邮件中删除属性时,这些属性也从原始邮件中删除。此外,当我使用 SendAsync 方法时,我从未在任何地方看到新消息。

如有任何帮助,我们将不胜感激。

            string fullPath = EntityNameHelper.FormatSubscriptionPath(TopicName, subscriptionName);
            var deadLetterClient = new MessageReceiver(ServiceBusConnectionString, fullDeadLetterPath);
            var client = new MessageSender(ServiceBusConnectionString, fullPath);

            var messages = deadLetterClient.ReceiveAsync(1).Result;
            if (messages.Any())
            {
                var message = messages.First();
                var newMessage = message.Clone();
                newMessage.UserProperties.Remove("DeadLetterReason");
                newMessage.UserProperties.Remove("DeadLetterErrorDescription");

                client.SendAsync(newMessage);
            }

newMessage.UserProperties == message.UserProperties 为真。显然克隆方法存在某种类型的错误,它没有进行深度克隆。

此时我最好的猜测是我将不得不手动创建消息对象的新副本,而不是依赖于克隆操作。