...
Just like the current implementation, this option would require the use of locks to maintain consistency when the same hierarchy is change changed concurrently by multiple threads. However, non-blocking locks could be used instead instead of blocking locks. This would involve the worker attempting to acquire a semaphore lock before executing the job. If the lock is not acquired, the message for the job would be returned to the queue for a future retry. The non-blocking locks are less resource intensive than the blocking locks used in the current implementation.
...