Benefits Of Queuing
Prioritize Execution Of Jobs
Enterprise-level systems are resource intensive and can challenge the processing potential of any system. In order to load-balance work, applications need to be selective when scheduling tasks to be completed. For example, during a busy part of the day for an online store, it is more important to process credit card information before sending purchase confirmation emails. Both tasks are important but a confirmation email can wait until there is CPU time available between credit card transactions. In this case, email confirmations should be placed into the ScriptQ with a low priority and credit card transactions with a high priority.
Execute Jobs Synchronously Or Asynchronously
ScriptQ can execute jobs synchronously or asynchronously. Asynchronously executed jobs can be grouped together to ensure that they execute in a specific sequence.
Balance Out The Use Of Computer Resources
In the absence of a queue, if five jobs were fired off, they would all try to run at the same time. The illustration below shows five scripts connecting to the database at the same time. This can result in unintentionally blocking certain applications from executing, or overwhelming the resources of other applications (such as databases) and causing deadlocks to occur.
The illustration below shows the same five scripts executing in a series, one after the other, using ScriptQ.
Retry Failed Jobs
Jobs often fail because they rely on resources or on systems that are temporarily unavailable or offline. A job that failed once may therefore succeed a few minutes later. ScriptQ offers the ability to retry execution of scripts after set time intervals.
Timeout Bad Jobs
A single "bad" job that fails to execute can hinder overall performance of an enterprise-level system by blocking other jobs from executing or by hogging system resources. Bad jobs may also fail because they are attempting to access resources that are unavailable or poorly constructed and stuck in a loop. ScriptQ addresses these issues by allowing time limits to be set for running jobs, preventing jobs from executing after that time.
Track Job Executions
ScriptQ can keep a log file, tracking the execution of jobs. In cases where proof that a specific job has been executed is not readily visible, a written record is useful to confirm its success or failure.
Execute Jobs in Different Security Contexts
It is often necessary to execute jobs in a security context different from the calling process. For example, for security reasons Web applications run with very few privileges and may not be able to access certain files or registry keys. This limited security context follows any jobs that the Web server spawns. However, since ScriptQ runs as a Windows Service, a different security context can be given to any of the jobs managed by the ScriptQ.
Persist Unexecuted Jobs
ScriptQ persists all jobs so if the server needs to be restarted while there are still jobs pending, no jobs are lost and they begin executing as soon as the server comes back online.