예제 #1
0
        public void ProcessMessage(IHandlerContext <WorkerThreadAvailableCommand> context)
        {
            var distributeSendCount = _configuration.Inbox.DistributeSendCount > 0
                ? _configuration.Inbox.DistributeSendCount
                : 5;

            _workerAvailabilityManager.RemoveByThread(context.Message);

            for (var i = 0; i < distributeSendCount; i++)
            {
                _workerAvailabilityManager.WorkerAvailable(context.Message);
            }
        }
예제 #2
0
        void HandleControlMessage(TransportMessage controlMessage)
        {
            var replyToAddress = controlMessage.ReplyToAddress;

            string messageSessionId;

            if (!controlMessage.Headers.TryGetValue(Headers.WorkerSessionId, out messageSessionId))
            {
                messageSessionId = String.Empty;
            }

            if (controlMessage.Headers.ContainsKey(Headers.WorkerStarting))
            {
                var capacity = int.Parse(controlMessage.Headers[Headers.WorkerCapacityAvailable]);

                workerAvailabilityManager.RegisterNewWorker(new Worker(replyToAddress, messageSessionId), capacity);

                return;
            }

            workerAvailabilityManager.WorkerAvailable(new Worker(replyToAddress, messageSessionId));
        }