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
|
||||
if (_rwl.TryEnterWriteLock(0)) {
|
||||
try {
|
||||
_taskLeaseService.Value.Acquire("JobsQueueProcessor", _clock.Value.UtcNow.AddMinutes(5));
|
||||
IEnumerable<QueuedJobRecord> messages;
|
||||
if (_taskLeaseService.Value.Acquire("JobsQueueProcessor", _clock.Value.UtcNow.AddMinutes(5)) != null) {
|
||||
IEnumerable<QueuedJobRecord> messages;
|
||||
|
||||
while ((messages = _jobsQueueManager.Value.GetJobs(0, 10).ToArray()).Any()) {
|
||||
foreach (var message in messages) {
|
||||
ProcessMessage(message);
|
||||
while ((messages = _jobsQueueManager.Value.GetJobs(0, 10).ToArray()).Any()) {
|
||||
foreach (var message in messages) {
|
||||
ProcessMessage(message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user