Azure Service Bus主题分区

时间:2017-06-30 11:46:48

标签: .net azure messaging azureservicebus azure-servicebus-topics

我正在尝试向使用启用重复检测启用分区选项创建的主题发送消息。我没有在SessionId实例上设置PartitionKeyBrokeredMessage属性。根据{{​​3}}:

  

如果队列或主题有   QueueDescription.RequiresDuplicateDetection属性设置为true和   BrokeredMessage.SessionId或BrokeredMessage.PartitionKey   未设置属性,然后是BrokeredMessage.MessageId属性   用作分区键。

创建BrokeredMessage的实例后,其MessageId属性会自动初始化,因此我希望分区能够正常工作。但事实并非如此:

  

Microsoft.Azure.WebJobs.Host.FunctionInvocationException:Exception   执行函数时:Functions.ProcessQueueMessage2Async --->   System.InvalidOperationException:需要为所有人设置SessionId   将消息发送到支持订购的分区主题,主题   Name = dev1-mtapp:主题:response-topic~255。   TrackingId:5fbe5df2-8747-4053-ba79-c29a80e9d1ed_G25_B31,   SystemTracker:DEV1-mtapp:主题:响应主题〜255

我哪里错了?

1 个答案:

答案 0 :(得分:2)

你应该设置:  topicDescription.SupportOrdering = false. 例如:

        if (!this.namespaceManager.TopicExists(topicName))
        {
            TopicDescription topicDescription = new TopicDescription(topicName);
            topicDescription.SupportOrdering = false;
            this.namespaceManager.CreateTopic(topicDescription);
        }