我正在尝试向使用启用重复检测和启用分区选项创建的主题发送消息。我没有在SessionId
实例上设置PartitionKey
和BrokeredMessage
属性。根据{{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
我哪里错了?
答案 0 :(得分:2)
你应该设置:
topicDescription.SupportOrdering = false.
例如:
if (!this.namespaceManager.TopicExists(topicName))
{
TopicDescription topicDescription = new TopicDescription(topicName);
topicDescription.SupportOrdering = false;
this.namespaceManager.CreateTopic(topicDescription);
}