Microsoft.Azure.ServiceBus.MessaginEntityDisabledException:ReceiveDisabled
我已将Azure服务总线队列状态从活动更改为接收禁用。因为我不想处理队列中任何可用的消息。i、 e.我将状态更改为接收禁用的原因 在我将队列状态更改为ReceiveDisabled后,我无法向该队列发布任何消息,因为我收到以下错误 Microsoft.Azure.ServiceBus.MessaginEntityDisabledException:消息实体“sb://xxx-xxx-xxx.ServiceBus.windows.net/test-queue”当前已禁用 更改队列状态的.Net核心代码:Microsoft.Azure.ServiceBus.MessaginEntityDisabledException:ReceiveDisabled,azure,azureservicebus,asp.net-core-2.1,azure-servicebus-queues,Azure,Azureservicebus,Asp.net Core 2.1,Azure Servicebus Queues,我已将Azure服务总线队列状态从活动更改为接收禁用。因为我不想处理队列中任何可用的消息。i、 e.我将状态更改为接收禁用的原因 在我将队列状态更改为ReceiveDisabled后,我无法向该队列发布任何消息,因为我收到以下错误 Microsoft.Azure.ServiceBus.MessaginEntityDisabledException:消息实体“sb://xxx-xxx-xxx.ServiceBus.windows.net/test-queue”当前已禁用 更改队列状态的.Net核心
var serviceBusManagementClient = new ManagementClient(_serviceBusSettings.Connection);
foreach (var queueItem in queueItems)
{
var queueDescription = await serviceBusManagementClient.GetQueueAsync(queueItem.Value);
queueDescription.Status = EntityStatus.ReceiveDisabled;
await serviceBusManagementClient.UpdateQueueAsync(queueDescription);
}
.Net核心代码,用于将消息发布到队列
var messageSender = new MessageSender(serviceBusSettings.Connection, serviceBusSettings.MainQueueName);
var message = new Message(Encoding.UTF8.GetBytes(id))
{
//Assign a SessionId for the message
MessageId = id
};
// Send a message corresponding to this sessionId to the queue
messageSender.SendAsync(message);
我正在使用下面的参考资料
Microsoft.Azure.ServiceBus
Microsoft.Azure.ServiceBus.Management
参考文献
那个么,我如何才能将消息发布到具有ReceiveDisabled状态的队列中?我不确定我是否遵守了。您调用了“receivedisabled”,并想知道为什么您的队列不再接收任何消息?!;-)您可能会误解这里的“接收”不是指您的接收者(即处理器),而是指队列。如果您不想再处理任何消息,请停止处理器@静音,在生产中很难停止处理器。所以,我没有停止处理器,而是将队列状态更改为ReceiveDisabled。但正如您现在发现的,ReceiveDisabled不是您想要的。因此,您的处理器中需要一些逻辑来停止从服务器接收消息queue@silent,好的,但通常这种状态的意思是队列部分挂起,允许发送。好的,对不起,我终于明白你的意思了。我的错!是的,我可以重新开始。发生了一些奇怪的事情。当您将状态设置为SendDisabled时,您会收到一条正确的消息“队列当前已禁用发送操作”。但对于ReceiveDisable,您只会得到“队列已禁用”。我将在这里打开一个问题,我不确定我是否明白。您调用了“receivedisabled”,并想知道为什么您的队列不再接收任何消息?!;-)您可能会误解这里的“接收”不是指您的接收者(即处理器),而是指队列。如果您不想再处理任何消息,请停止处理器@静音,在生产中很难停止处理器。所以,我没有停止处理器,而是将队列状态更改为ReceiveDisabled。但正如您现在发现的,ReceiveDisabled不是您想要的。因此,您的处理器中需要一些逻辑来停止从服务器接收消息queue@silent,好的,但通常这种状态的意思是队列部分挂起,允许发送。好的,对不起,我终于明白你的意思了。我的错!是的,我可以重新开始。发生了一些奇怪的事情。当您将状态设置为SendDisabled时,您会收到一条正确的消息“队列当前已禁用发送操作”。但对于ReceiveDisable,您只会得到“队列已禁用”。我将在这里打开一个问题