public void acquire()
        {
            while (true)
            {
                var topics = payload.topics;

                topics.Clear();

                foreach (KeyValuePair <string, IHandler> entry in handlers)
                {
                    var topic = new TopicRequestDto()
                    {
                        topicName    = entry.Key,
                        lockDuration = 20_000
                    };

                    topics.Add(topic);
                }

                var tasks = restService.FetchAndLock(payload);

                foreach (var task in tasks.Result)
                {
                    IHandler handler;
                    if (handlers.TryGetValue(task.TopicName, out handler))
                    {
                        handler.execute(task, externalTaskService);
                    }
                }
            }
        }