Пример #1
0
        private bool ValidateItem()
        {
            string    errorMessage = "";
            bool      isValid      = true;
            CoverMode type         = CoverMode;

            if (txtKey.TextLength == 0)
            {
                isValid       = false;
                errorMessage += "\r\nInvalid Queue name";
            }
            //switch (type)
            //{
            //    case CoverMode.ItemsOnly:
            //    case CoverMode.ItemsAndLog:
            //        if (cbProvider.Text.Length == 0)
            //        {
            //            isValid = false;
            //            errorMessage += "\r\nInvalid Provider";
            //        }
            //        if (txtConnection.Text.Length == 0)
            //        {
            //            isValid = false;
            //            errorMessage += "\r\nInvalid Connection";
            //        }
            //        break;
            //}

            if (!string.IsNullOrEmpty(errorMessage))
            {
                MsgBox.ShowError(errorMessage);
            }
            return(isValid);
        }
Пример #2
0
        public PriorityFsQueue(QueueHost qp)
            : base(qp.HostName)
        {
            int numProcs         = Environment.ProcessorCount;
            int concurrencyLevel = numProcs * 2;
            int initialCapacity  = 101;

            QueueList = new ConcurrentDictionary <Ptr, IQueueItem>(concurrencyLevel, initialCapacity);

            //CommitMode = qp.CommitMode;
            //CoverMode = qp.Mode;
            RootPath   = qp.RootPath;
            CommitMode = qp.CommitMode;
            CoverMode  = qp.CoverMode;

            if (qp.CoverMode == CoverMode.FileStream)
            {
                CoverMode = CoverMode.FileStream;
                //DbLiteSettings settings = new DbLiteSettings()
                //{
                //    Name = qp.QueueName,
                //    CommitMode = (CommitMode)(int)qp.CommitMode,
                //    DbPath = AgentManager.Settings.QueuesPath
                //};
                //settings.SetFast();
                //QueueHost queueHost = qp.GetRoutHost();
                m_fs        = new FileMessage(qp);
                m_fs.Logger = Logger;
                //InitRecoverQueue();

                //m_db = new PersistentBinary<IQueueItem>(settings);
                ////m_db = new PersistentDictionary(settings);
                //m_db.BeginLoading += M_db_BeginLoading;
                //m_db.LoadCompleted += M_db_LoadCompleted;
                //m_db.ErrorOcurred += M_db_ErrorOcurred;
                //m_db.ClearCompleted += M_db_ClearCompleted;
                ////m_db.ItemChanged += M_db_ItemChanged;

                //m_db.ItemLoaded = (item) =>
                //{
                //    this.ReEnqueue(item);
                //};

                if (qp.ReloadOnStart)
                {
                    Logger.Info("PriorityFsQueue will load items to : {0}", qp.HostName);
                    m_fs.ReloadItemsAsync(FolderType.Queue, 0, (IQueueItem item) =>
                    {
                        this.ReEnqueue(item);
                    });
                }
                else
                {
                    Logger.Info("PriorityFsQueue will clear all items from : {0}", qp.HostName);
                    m_fs.ClearItems(FolderType.Queue);
                }
            }
        }
Пример #3
0
 /// <summary>
 /// QProperties ctor
 /// </summary>
 /// <param name="queueName"></param>
 /// <param name="isTrans"></param>
 /// <param name="mode"></param>
 public QProperties(string queueName, bool isTrans, CoverMode mode)
 {
     ServerPath    = "localhost";
     QueueName     = queueName;
     Mode          = mode;
     IsTrans       = isTrans;
     MaxRetry      = DefaultMaxRetry;
     ReloadOnStart = false;
 }
Пример #4
0
        public PriorityFsQueue(IQProperties qp)
            : base(qp.QueueName)
        {
            int numProcs         = Environment.ProcessorCount;
            int concurrencyLevel = numProcs * 2;
            int initialCapacity  = 101;

            QueueList = new ConcurrentDictionary <Ptr, IQueueItem>(concurrencyLevel, initialCapacity);

            CommitMode = (CommitMode)(int)qp.CommitMode;
            CoverMode  = qp.Mode;

            if (CoverMode == CoverMode.FileStream)
            {
                DbLiteSettings settings = new DbLiteSettings()
                {
                    Name       = qp.QueueName,
                    CommitMode = (CommitMode)(int)qp.CommitMode,
                    DbPath     = AgentManager.Settings.QueuesPath
                };
                //settings.SetFast();
                QueueHost queueHost = qp.GetRoutHost();
                m_fs = new FileMessage(queueHost);

                //m_db = new PersistentBinary<IQueueItem>(settings);
                ////m_db = new PersistentDictionary(settings);
                //m_db.BeginLoading += M_db_BeginLoading;
                //m_db.LoadCompleted += M_db_LoadCompleted;
                //m_db.ErrorOcurred += M_db_ErrorOcurred;
                //m_db.ClearCompleted += M_db_ClearCompleted;
                ////m_db.ItemChanged += M_db_ItemChanged;

                //m_db.ItemLoaded = (item) =>
                //{
                //    this.ReEnqueue(item);
                //};

                if (qp.ReloadOnStart)
                {
                    QLogger.InfoFormat("PriorityComplexQueue will load items to : {0}", qp.QueueName);
                }
                else
                {
                    QLogger.InfoFormat("PriorityComplexQueue will clear all items from : {0}", qp.QueueName);
                }

                //m_db.ReloadOrClearPersist(qp.ReloadOnStart);

                m_fs.ReloadItemsTo(0, (IQueueItem item) =>
                {
                    this.ReEnqueue(item);
                });
            }
        }
Пример #5
0
 /// <summary>
 /// QProperties ctor
 /// </summary>
 /// <param name="queueName"></param>
 /// <param name="isTrans"></param>
 /// <param name="mode"></param>
 public QProperties(string queueName, bool isTrans, CoverMode mode)
 {
     ServerPath    = "localhost";
     QueueName     = queueName;
     Mode          = mode;
     IsTrans       = isTrans;
     MaxRetry      = DefaultMaxRetry;
     ReloadOnStart = false;
     IsTopic       = false;
     TargetPath    = null;
     CommitMode    = PersistCommitMode.None;
 }
Пример #6
0
        public IQueueItem AddQueue(CoverMode mode, bool isTrans, bool isTopic)
        {
            QProperties qp = new QProperties()
            {
                QueueName      = _QueueName,
                ServerPath     = "localhost",
                Mode           = mode,
                IsTrans        = isTrans,
                MaxRetry       = QueueDefaults.DefaultMaxRetry,
                ReloadOnStart  = false,
                ConnectTimeout = 0,
                TargetPath     = "",
                IsTopic        = isTopic
            };

            return(AddQueue(qp));
            //var message = new QueueItem()
            //{
            //    Host = _QueueName,
            //    Command = QueueCmd.AddQueue,
            //};

            //message.SetBody(qp.GetEntityStream(false), qp.GetType());

            //GenericNameValue header = new GenericNameValue();

            //header.Add("QueueName", _QueueName);
            //header.Add("ServerPath", "localhost");
            //header.Add("Mode", (int)mode);
            //header.Add("IsTrans", isTrans);
            //header.Add("MaxRetry", QueueDefaults.DefaultMaxRetry);
            //header.Add("ReloadOnStart", false);
            //message.SetHeader(header);
            //message.SetBody(qp);

            //var response=base.SendDuplex(message);
            //return response;// == null ? null : response.ToMessage();
            //ReportApi client = new ReportApi(QueueDefaults.QueueManagerPipeName, true);
            //var res= client.Exec(message, QueueCmd.AddQueue);
            //return (Message)res;// client.Exec(message, QueueCmd.AddQueue);
        }
Пример #7
0
        /// <summary>Creates a transactional or non-transactional Message Queuing queue at the specified path.</summary>
        /// <returns>A <see cref="T:Nistec.Messaging.MQueue"></see> that represents the new queue.</returns>
        /// <param name="queueName">The path of the queue to create. </param>
        /// <param name="isTrans">true to create a transactional queue; false to create a non-transactional queue. </param>
        /// <param name="mode">One of the <see cref="CoverMode"/> options.</param>
        public MQueue AddQueue(string queueName, bool isTrans, CoverMode mode)
        {
            if (queueName == null)
            {
                throw new ArgumentNullException("queueName");
            }
            if (queueName.Length == 0)
            {
                throw new ArgumentException("InvalidParameter", "queueName");
            }
            if (MQ.ContainsKey(queueName))
            {
                return((MQueue)MQ[queueName]);
            }
            //CoverMode mode= CoverMode.None;
            //if (!string.IsNullOrEmpty(Connection) && QueueProvider > QueueProvider.None)
            //{
            //    mode= CoverMode.ItemsOnly;
            //}

            return(AddQueue(new QProperties(queueName, isTrans, mode)));
        }
Пример #8
0
        /// <summary>
        /// MQueue Ctor
        /// </summary>
        /// <param name="mqp"></param>
        public MQueue(IQProperties prop)
        {
            Logger = QLogger.Logger.ILog;

            Console.WriteLine("Init MQueue " + prop);

            LogActionInfo("MQueue ctor", "Init MQueue " + prop.Print());

            TimeStarted = DateTime.Now;
            LOCK();

            m_enabled = true;

            //m_Server = prop.Server;
            m_QueueName = prop.QueueName;
            m_CoverMode = prop.Mode;
            m_maxRetry  = prop.MaxRetry;
            m_isTrans   = prop.IsTrans;
            IsTopic     = prop.IsTopic;
            TargetPath  = prop.TargetPath;

            RoutHost = prop.GetRoutHost();
            if (IsCoverable)
            {
                //_QCover = new QCover()
                //{
                //    ConnectTimeout = prop.ConnectTimeout,
                //    CoverProvider = IsDbQueue ? CoverProviders.Db : CoverProviders.File,
                //    CoverPath = prop.CoverPath
                //};
                m_QueuesPath = AgentManager.Settings.QueuesPath;
            }
            if (IsTopic)
            {
                Topic = new TopicController(this);
            }

            resetEvent = new ManualResetEvent(false);

            m_Perfmon = new QueuePerformanceCounter(this, QueueAgentType.MQueue, m_QueueName);


            //Q = prop.Factory();
            Q        = new PriorityComplexQueue(prop);
            Q.Logger = Logger;

            Q.MessageArrived   += new QueueItemEventHandler(Q_MessageArrived);
            Q.MessageReceived  += new QueueItemEventHandler(Q_MessageReceived);
            Q.TransactionBegin += new QueueItemEventHandler(Q_MessageTransBegin);
            Q.TransactionEnd   += new QueueItemEventHandler(Q_MessageTransEnd);
            Q.ErrorOccured     += new QueueItemEventHandler(Q_ErrorOccured);
            //InitRecoverQueue(DefaultIntervalMinuteRecover);

            if (prop.ReloadOnStart)
            {
                Q.ReloadItemsInternal();
            }

            UNLOCK();
            //if (recoverable)
            //{
            //    InitRecoverQueue(DefaultIntervalMinuteRecover);
            //}
            //else
            //{
            //    UNLOCK();
            //}
        }
Пример #9
0
        ///// <summary>
        ///// ValidateHoldItems
        ///// </summary>
        //public void ValidateHoldItems()
        //{
        //    if (HoldItemsCount() > 0)
        //    {
        //        if (Q.TotalCount < MinCapacity && !HoldEnqueue)
        //        {
        //            HoldItemsEnqueue(CapacityReEnqueue);
        //        }
        //    }
        //}

        /// <summary>
        /// SetProperty
        /// </summary>
        /// <param name="propertyName"></param>
        /// <param name="propertyValue"></param>
        public void SetProperty(string propertyName, object propertyValue)
        {
            switch (propertyName)
            {
            //case "MaxItemsPerSecond":
            //    MaxItemsPerSecond = Types.ToInt(propertyValue, MaxItemsPerSecond);
            //    break;
            //case "EnqueueWait":
            //    EnqueueWait = Types.ToInt(propertyValue, EnqueueWait);
            //    break;
            //case "DequeueWait":
            //    DequeueWait = Types.ToInt(propertyValue, DequeueWait);
            //    break;
            //case "UseThreadSettings":
            //    UseThreadSettings = Types.ToBool(propertyValue, UseThreadSettings);
            //    break;
            //case "SerializeBody":
            //    SerializeBody = Types.ToBool(propertyValue, SerializeBody);
            //    break;
            //case "HoldInterval":
            //    HoldInterval = Types.ToInt(propertyValue, HoldInterval);
            //    break;
            //case "CapacityReEnqueue":
            //    CapacityReEnqueue = Types.ToInt(propertyValue, CapacityReEnqueue);
            //    break;
            //case "DateFormat":
            //    DateFormat = Types.NZ(propertyValue, DateFormat);
            //    break;
            //case "LogItems":
            //    LogItems = Types.ToBool(propertyValue, LogItems);
            //    break;
            case "HoldDequeue":
                HoldDequeue = Types.ToBool(propertyValue, HoldDequeue);
                break;

            case "HoldEnqueue":
                HoldEnqueue = Types.ToBool(propertyValue, HoldEnqueue);
                break;

            case "Enabled":
                Enabled = Types.ToBool(propertyValue, Enabled);
                break;

            case "MaxCapacity":
                MaxCapacity = Types.ToInt(propertyValue, MaxCapacity);
                break;

            //case "MinCapacity":
            //    MinCapacity = Types.ToInt(propertyValue, MinCapacity);
            //    break;
            case "Collate":
                Collate = Types.NZ(propertyValue, Collate);
                break;

            case "IsTrans":
                m_isTrans = Types.ToBool(propertyValue, IsTrans);
                break;

            case "MaxRetry":
                m_maxRetry = (byte)Types.ToInt(propertyValue, MaxRetry);
                break;

            case "Mode":
                m_CoverMode = (CoverMode)Types.ParseEnum(typeof(CoverMode), propertyValue.ToString(), CoverMode.Memory);
                break;

            //case "Provider":
            //    m_Provider = (QueueProvider)Types.ParseEnum(Provider.GetType(), propertyValue.ToString(), Provider);
            //    break;
            //case "Server":
            //    m_Server = Types.ToInt(propertyValue, Server);
            //    break;
            default:
                return;
            }
        }