我们切换到 WebJobs,我们的后台任务在新项目进入 Azure 队列时开始工作。现在我们有一些奇怪的问题,他似乎在访问 Redis RedLock 和 Storage 时遇到了我无法解释的问题。
现在我们遇到的最大问题是RedLock。我们正在使用 RedLock.Net 进行分布式锁定。现在这在我们的生产 Web 应用程序中一切正常,它也适用于我们拥有的后台工作人员,但是一旦我们切换到 WebJobs,他基本上无法获得锁。用一些代码来支持这一点......我们像这样锁定:
using (var redisLock = await _redLockConnection.RedisLockFactory.CreateAsync(resource, UserLockExpiryTime, UserLockWaitTime, UserLockRetryTime))
{
// make sure we got the lock
if (redisLock.IsAcquired)
{
// execute code...
}
else
{
throw new CouldNotAcquireRedLockException();
}
}
这里的问题是,IsAcquired 在 Webjob 中总是错误的,我不知道为什么!?
可能与此问题有关的第二件事是删除 azure 存储中的 blob 文件,该文件仅在 WebJob 中出现 404 失败。
var file = _blobContainer.GetBlockBlobReference("file.txt");
file?.Delete();
这将失败并在 WebJob 中出现 404 Not found 异常。
有什么我错过了设置 webjob 的吗?这可能是写操作的访问问题吗?很高兴有任何帮助!