问题描述
当尝试向Azure Service Bus队列添加消息时,有时会出现此错误。谁能解释为什么会这样吗?
设置为,我们有一个Azure持久功能,该功能可以调用活动功能。该活动功能将该消息添加到队列中。
这是我们进行排队的方式。
public async Task SendWithDelayAsync<T>(T obj,TimeSpan delayProcessing,string sessionId = null) where T : BaseQueueMessage
{
string messageBody = JsonConvert.SerializeObject(obj);
var message = new Message(Encoding.UTF8.GetBytes(messageBody));
if (!string.IsNullOrEmpty(sessionId))
{
message.SessionId = sessionId;
}
// Send the message to the queue.
await _queueClient.ScheduleMessageAsync(message,DateTime.Now.Add(delayProcessing));
}
谢谢!
解决方法
如docs
中所述,这种情况发生在
尝试对具有以下内容的对象调用操作 已被关闭,中止或处置。在极少数情况下,环境 交易已被处理。
解决方案是检查代码,并确保它不会调用对已处置对象的操作。
过去我有类似的问题,如果您使用的不是Microsoft.Azure.WebJobs.Extensions.ServiceBus SDK版本,请尝试将其升级到“ 4.1.2”。
,请尝试将其包含在您的代码中。这会让您了解客户端是否关闭
if (_client.IsClosedOrClosing)
{
_queueClient= new QueueClient(connectionString,queueName);
}