public void Add(IEventTracker eventTracker, Node node)
        {
            var message = node.CreateStartJobMessage(eventTracker,
                                                     Singleton <DIFactory> .Instance.Create <IChannel>("OutOfNodeInSameProcess"));

            var queue    = new BlockingCollection <IMessage>(1);
            var callback = new QueueBasedMessageReceiver(queue);

            var obj = Singleton <DIFactory> .Instance.Create <IObject>(
                new Dictionary <string, object>() {
                { TypeBasedMessageReceiverRegistryInfoObjectPattern.Type.Name, "StartJobResponse" }
            }
                );

            MessageBus.Connect(obj, callback);
            MessageBus.Send(message);

            IMessage response;
            var      failMessage = "Job " + eventTracker.GetType().Name + " could not start.";

            if (!queue.TryTake(out response, 2000))
            {
                throw new Exception(failMessage);
            }
            if (!ResponseMessageObjectPattern.Success[response])
            {
                throw new Exception(failMessage);
            }
            _trackers.Add(eventTracker);
        }
        public void Add(IEventTracker eventTracker, Node node)
        {
            var message = node.CreateStartJobMessage(eventTracker,
                Singleton<DIFactory>.Instance.Create<IChannel>("OutOfNodeInSameProcess"));

            var queue = new BlockingCollection<IMessage>(1);
            var callback = new QueueBasedMessageReceiver(queue);

            var obj = Singleton<DIFactory>.Instance.Create<IObject>(
                new Dictionary<string, object>() { 
                        { TypeBasedMessageReceiverRegistryInfoObjectPattern.Type.Name, "StartJobResponse" } 
                    }
            );

            MessageBus.Connect(obj, callback);
            MessageBus.Send(message);

            IMessage response;
            var failMessage = "Job " + eventTracker.GetType().Name + " could not start.";
            if (!queue.TryTake(out response, 2000))
            {
                throw new Exception(failMessage);
            }
            if (!ResponseMessageObjectPattern.Success[response])
            {
                throw new Exception(failMessage);
            }
            _trackers.Add(eventTracker);
        }