在C#中创建Azure Service总线队列不设置EnablePartioning或大小?

问题描述 投票:0回答:1

我有以下代码在Azure服务总线中创建队列

        var cs = azureServiceBusConnectionString;
        var namespaceManager = NamespaceManager.CreateFromConnectionString(cs);
        if (namespaceManager.QueueExists(queueName))
        {
            namespaceManager.DeleteQueue(queueName);
        }

        var que = namespaceManager.CreateQueue(queueName);
        que.EnablePartitioning = true;

我的队列创建正常,但我有2个问题

1)即使我将EnablePartioning设置为true,我的队列也将EnablePartioning设置为false。为什么是这样?是否有一个方法我必须调用以保存更改或2)我无法设置队列的大小,因为SizeInBytes属性是只读的。我怎样才能做到这一点?

我没有看到任何允许我设置EnablePartitioning或大小的构造函数?

保罗

c# azure azureservicebus azure-servicebus-queues
1个回答
2
投票

您应该在创建队列时在QueueDescription上启用分区。

var cs = azureServiceBusConnectionString;
var namespaceManager = NamespaceManager.CreateFromConnectionString(cs);
if (namespaceManager.QueueExists(queueName))
{
    namespaceManager.DeleteQueue(queueName);
}

var queueDescription = new QueueDescription(queueName);
queueDescription.EnablePartitioning = true;
queueDescription.MaxSizeInMegabytes = 1024;

var que = namespaceManager.CreateQueue(queueDescription);

您无法设置SizeInBytes,因为它基于队列中消息的数量和大小。设置它没有任何意义。

您可以使用MaxSizeInMegabytes属性设置最大队列大小。

© www.soinside.com 2019 - 2024. All rights reserved.