private void ProcessPartition(string key)
        {
            try
            {
                var events = _queue.GetPendingEventsFor(key);
                foreach (var eventData in events)
                {
                    SendAndDeletePending(eventData);
                }

                var hasMoreUnPublishedEvents = _queue.GetPendingEventsFor(key).Any();
                if (hasMoreUnPublishedEvents)
                {
                    EnqueueIfNotExists(key);
                }
            }
            catch (Exception ex)
            {
                Trace.TraceError("An error occurred while getting the events pending for publishing for partition {0}:\r\n{1}", key, ex);
                throw;
            }
        }