mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2026-02-09 09:16:41 +08:00
Fixing that JobsQueue doesn't actually use Task Lease to prevent multiple server nodes from executing the same jobs
This commit is contained in:
@@ -35,12 +35,13 @@ namespace Orchard.JobsQueue.Services {
|
|||||||
// prevent two threads on the same machine to process the message queue
|
// prevent two threads on the same machine to process the message queue
|
||||||
if (_rwl.TryEnterWriteLock(0)) {
|
if (_rwl.TryEnterWriteLock(0)) {
|
||||||
try {
|
try {
|
||||||
_taskLeaseService.Value.Acquire("JobsQueueProcessor", _clock.Value.UtcNow.AddMinutes(5));
|
if (_taskLeaseService.Value.Acquire("JobsQueueProcessor", _clock.Value.UtcNow.AddMinutes(5)) != null) {
|
||||||
IEnumerable<QueuedJobRecord> messages;
|
IEnumerable<QueuedJobRecord> messages;
|
||||||
|
|
||||||
while ((messages = _jobsQueueManager.Value.GetJobs(0, 10).ToArray()).Any()) {
|
while ((messages = _jobsQueueManager.Value.GetJobs(0, 10).ToArray()).Any()) {
|
||||||
foreach (var message in messages) {
|
foreach (var message in messages) {
|
||||||
ProcessMessage(message);
|
ProcessMessage(message);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user