Разделение тем служебной шины Azure
Я пытаюсь отправить сообщение в тему, которая была создана с установленными опциями Включить обнаружение дубликатов и Включить разделение. Я не ставлю SessionId
а также PartitionKey
свойства на моем BrokeredMessage
пример. Согласно этому:
Если для очереди или темы свойство QueueDescription.RequiresDuplicateDetection имеет значение true, а свойства BrokeredMessage.SessionId или BrokeredMessage.PartitionKey не заданы, то ключ BrokeredMessage.MessageId служит ключом раздела.
После того, как я создаю экземпляр BrokeredMessage
его MessageId
свойство инициализируется автоматически, поэтому я ожидаю, что разбиение будет работать. Но это не так:
Microsoft.Azure.WebJobs.Host.FunctionInvocationException: исключение при выполнении функции: Functions.ProcessQueueMessage2Async ---> System.InvalidOperationException: SessionId должен быть установлен для всех сообщений-посредников в разделенной теме, которая поддерживает упорядочение, имя темы = dev1-mtapp: тема: ответ-тема ~255. Идентификатор отслеживания:5fbe5df2-8747-4053-ba79-c29a80e9d1ed_G25_B31, SystemTracker:dev1-mtapp: тема: ответная тема ~ 255
Где я не прав?
1 ответ
Вы должны установить: topicDescription.SupportOrdering = false.
Например:
if (!this.namespaceManager.TopicExists(topicName))
{
TopicDescription topicDescription = new TopicDescription(topicName);
topicDescription.SupportOrdering = false;
this.namespaceManager.CreateTopic(topicDescription);
}