C# 中的 Azure 服务总线队列创建未设置 EnablePartioning 或大小?
Azure Service bus Queue creation in C# does not set EnablePartioning or size?
我有以下用于在 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 或大小的构造函数?
保罗
您应该在创建队列时在 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
属性 设置最大队列大小。
我有以下用于在 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 或大小的构造函数?
保罗
您应该在创建队列时在 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
属性 设置最大队列大小。