예제 #1
0
        //*********************************************************************
        ///
        ///  <summary>
        ///
        ///  </summary>
        ///  <param name="queue"></param>
        ///  <param name="messageId"></param>
        ///  <param name="payload"></param>
        /// <param name="queueName"></param>
        ///
        //*********************************************************************
        private void EnQueue(QueueClient queue, string messageId,
                             object payload, QueueNameEnum queueName)
        {
            var message = new BrokeredMessage(payload)
            {
                MessageId = messageId
            };

            while (true)
            {
                try
                {
                    message.Properties.Add("QueueName", queueName.ToString());
                    queue.Send(message);
                    break;
                }
                catch (MessagingException e)
                {
                    if (!e.IsTransient)
                    {
                        Console.WriteLine(e.Message);
                        throw;
                    }
                    else
                    {
                        Thread.Sleep(QueueTransientRetryTime);
                    }
                }
            }
        }
예제 #2
0
        //*********************************************************************
        ///
        /// <summary>
        ///
        /// </summary>
        /// <param name="queueName"></param>
        /// <returns></returns>
        ///
        //*********************************************************************

        public IEnumerable <BrokeredMessage> ReadMessagesbyQueueName(QueueNameEnum queueName)
        {
            var qc       = GetQueue(queueName, true);
            var messages = new List <BrokeredMessage>();

            try
            {
                IEnumerable <BrokeredMessage> recdMsg;
                while ((recdMsg = qc.ReceiveBatch(200, _BatchReadTimeSpan)) != null)
                {
                    messages.AddRange(recdMsg);
                    foreach (var msg in recdMsg)
                    {
                        msg.Abandon();
                    }

                    return(messages);
                }
            }
            catch (MessagingException e)
            {
                if (!e.IsTransient)
                {
                    throw;
                }
                Thread.Sleep(QueueTransientRetryTime);
            }

            return(messages);
        }
예제 #3
0
 public IEnumerator CheckQueueNotEmpty(QueueNameEnum queueName)
 {
     if (this.IsQueueEmpty(queueName))
     {
         Debug.Log("Queue is empty");
         yield return(new WaitForSeconds(0.1f));
     }
 }
예제 #4
0
        //*********************************************************************
        ///
        ///  <summary>
        ///
        ///  </summary>
        ///  <param name="queueName"></param>
        /// <param name="timeoutSeconds"></param>
        /// <returns></returns>
        ///
        //*********************************************************************

        public BrokeredMessage ReadQueue(QueueNameEnum queueName, int timeoutSeconds)
        {
            try
            {
                var qc = GetQueue(queueName, true);
                return(ReadQueue(qc, timeoutSeconds));
            }
            catch (Exception ex)
            {
                throw new Exception("Exception in CmpQueue.ReadQueue() : " +
                                    Utilities.UnwindExceptionMessages(ex));
            }
        }
예제 #5
0
        //*********************************************************************
        ///
        /// <summary>
        ///
        /// </summary>
        /// <param name="queueName"></param>
        /// <param name="messageId"></param>
        /// <param name="payload"></param>
        ///
        //*********************************************************************

        public void EnQueue(QueueNameEnum queueName, string messageId, object payload)
        {
            try
            {
                var qc = GetQueue(queueName, true);
                EnQueue(qc, messageId, payload, queueName);
            }
            catch (Exception ex)
            {
                throw new Exception("Exception in CmpQueue.EnQueue() : " +
                                    Utilities.UnwindExceptionMessages(ex));
            }
        }
예제 #6
0
        //*********************************************************************
        ///
        ///  <summary>
        ///  Be sure to call CompleteMessage on the returned BrokeredMessage
        ///  when you are done processing it.
        ///  </summary>
        ///  <typeparam name="T"></typeparam>
        ///  <param name="queueName"></param>
        /// <param name="timeoutSeconds"></param>
        /// <param name="messageId"></param>
        ///  <param name="payload"></param>
        ///  <returns></returns>
        ///
        //*********************************************************************

        public BrokeredMessage ReadQueue <T>(QueueNameEnum queueName,
                                             int timeoutSeconds, ref string messageId, ref T payload)
        {
            try
            {
                var qc = GetQueue(queueName, true);
                var bm = ReadQueue(qc, timeoutSeconds);

                if (null != bm)
                {
                    messageId = bm.MessageId;
                    payload   = bm.GetBody <T>();
                }

                return(bm);
            }
            catch (Exception ex)
            {
                throw new Exception("Exception in CmpQueue.ReadQueue() : " +
                                    Utilities.UnwindExceptionMessages(ex));
            }
        }
예제 #7
0
        public IEnumerable <BrokeredMessage> ReadAllBatch(QueueNameEnum queueNameEnum,
                                                          int count, bool getDeadLetter, bool abandon)
        {
            try
            {
                QueueClient qc        = null;
                var         queueName = queueNameEnum.ToString();

                if (getDeadLetter)
                {
                    queueName = QueueClient.FormatDeadLetterPath(queueName);
                }

                qc = GetQueue(queueName, true);

                return(ReadAllBatch(qc, count, abandon));
            }
            catch (Exception ex)
            {
                throw new Exception("Exception in CmpQueue.ReadQueueBatch() : " +
                                    Utilities.UnwindExceptionMessages(ex));
            }
        }
예제 #8
0
    public bool IsQueueEmpty(QueueNameEnum queueName)
    {
        bool empty = true;

        switch (queueName)
        {
        case QueueNameEnum.STARTINGPLAYER:
            empty = startingPlayerSetQueue.Count.Equals(0);
            break;

        case QueueNameEnum.OPPONENTMOVE:
            empty = opponentMoveQueue.Count.Equals(0);
            break;

        case QueueNameEnum.CHALLENGEMOVE:
            empty = challengeMoveQueue.Count.Equals(0);
            break;

        case QueueNameEnum.MATCHMAKINGGROUPNUMBER:
            empty = matchmakingGroupNumberQueue.Count.Equals(0);
            break;
        }
        return(empty);
    }
예제 #9
0
        //*********************************************************************
        ///
        /// <summary>
        ///
        /// </summary>
        /// <param name="queueName"></param>
        ///
        //*********************************************************************

        public void Close(QueueNameEnum queueName)
        {
            var qc = GetQueue(queueName, true);

            qc.Close();
        }
예제 #10
0
        //*********************************************************************
        ///
        ///  <summary>
        ///
        ///  </summary>
        ///  <param name="queueName"></param>
        ///  <param name="count"></param>
        /// <param name="abandon"></param>
        /// <returns></returns>
        ///
        //*********************************************************************

        /*public IEnumerable<BrokeredMessage> ReadQueueBatch(QueueNameEnum queueName, int count, bool abandon)
         * {
         *  try
         *  {
         *      QueueClient qc = GetQueue(queueName, true);
         *      return ReadQueueBatch(qc, count, abandon);
         *  }
         *  catch (Exception ex)
         *  {
         *      throw new Exception("Exception in CmpQueue.ReadQueueBatch() : " +
         *          Utilities.UnwindExceptionMessages(ex));
         *  }
         * }*/

        public IEnumerable <BrokeredMessage> ReadQueueBatch(QueueNameEnum queueName,
                                                            int count, bool abandon)
        {
            return(ReadQueueBatch(queueName.ToString(), count, abandon));
        }
예제 #11
0
        //*********************************************************************
        ///
        ///  <summary>
        ///
        ///  </summary>
        /// <param name="queueNameEnum"></param>
        /// <param name="createIfNotExists"></param>
        /// <returns></returns>
        ///
        //*********************************************************************

        private QueueClient GetQueue(QueueNameEnum queueNameEnum, bool createIfNotExists)
        {
            return(GetQueue(queueNameEnum.ToString(), createIfNotExists));
        }