コード例 #1
0
        //void m_TransDispatcher_SyncCompleted(object sender, SyncItemEventArgs<TransactionItem> e)
        //{
        //    //TODO:

        //    //e.Item.SyncExpired();
        //}


        public void LoadTopicConfig()
        {
            var config = QueueServerConfig.GetConfig();

            var items = config.RemoteQueueSettings;

            foreach (QueueServerConfigItem item in items)
            {
                //var prop = new QProperties(item.QueueName, item.IsTrans, (CoverMode)item.CoverMode);
                if (item.IsTopic)
                {
                    var publisher = new TopicPublisher()
                    {
                        TopicId   = item.QueueName,
                        TopicName = item.QueueName
                    };

                    string[] strsubs = item.TargetPath.SplitTrim('|');
                    foreach (var s in strsubs)
                    {
                        publisher.AddSubscriber(TopicSubscriber.Create(s, item.QueueName));
                    }

                    var mq = AddQueue(item);
                    QLogger.InfoFormat("Queue Topic Added: {0}", item.Print());
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// OnStop
        /// </summary>
        protected override void OnStop()
        {
            base.OnStop();

            AgentManager.StopController();
            QLogger.InfoFormat("TcpServerListener stoped :{0}", this.Settings.HostName);
        }
コード例 #3
0
        public IQueueItem AddQueue(QProperties prop, out MQueue mq)
        {
            if (MQ.ContainsKey(prop.QueueName))
            {
                //if (prop.ReloadOnStart)
                //{
                //    MQueue q = new MQueue(prop);
                //    MQ[prop.QueueName] = q;
                //    mq = q;
                //}
                //else
                //{
                //    mq = MQ[prop.QueueName];
                //}
                mq = MQ[prop.QueueName];
                return(QueueItem.Ack(MessageState.AllreadyExists, QueueCmd.AddQueue, "AllreadyExists, Name: " + prop.QueueName, null));
            }
            //if (prop.IsDbQueue)
            //{
            //    AddDbQueue(prop.QueueName, prop.IsTrans);
            //}
            MQueue queue = new MQueue(prop);

            //LoadQueue(queue, prop);
            MQ[prop.QueueName] = queue;
            mq = queue;
            QLogger.InfoFormat("AddQueue : {0}", prop.Print());
            //return  MessageState.Ok;

            return(QueueItem.Ack(MessageState.Ok, QueueCmd.AddQueue));
        }
コード例 #4
0
        /// <summary>Creates Message Queuing queue by specified properties.</summary>
        /// <param name="prop">The queue properties. </param>
        /// <returns>A <see cref="T:Nistec.Messaging.MQueue"></see> that represents the new queue.</returns>
        public MQueue AddQueue(IQProperties prop)
        {
            //prop.IsValid(lockKey);

            if (MQ.ContainsKey(prop.QueueName))
            {
                //if (prop.ReloadOnStart)
                //{
                //    MQueue q = new MQueue(prop);
                //    MQ[prop.QueueName] = q;
                //    return q;
                //}
                return((MQueue)MQ[prop.QueueName]);
            }
            //if (prop.IsDbQueue)
            //{
            //    AddDbQueue(prop.QueueName, prop.IsTrans);
            //}

            MQueue queue = new MQueue(prop);

            //LoadQueue(queue,prop);
            MQ[prop.QueueName] = queue;

            QLogger.InfoFormat("AddQueue : {0}", prop.QueueName);

            return(queue);
        }
コード例 #5
0
        public TransStream GetQueueReport(IQueueMessage message)
        {
            MQueue queue = Get(message.Host);

            if (queue == null)
            {
                var ack = new QueueItem()//MessageState.QueueNotFound, "QueueNotFound: " + message.Host, null, message.Host);
                {
                    MessageState = MessageState.QueueNotFound,
                    Label        = "QueueNotFound: " + message.Host,
                    Host         = message.Host
                };
                QLogger.InfoFormat("QueueController GetQueueReport QueueNotFound : {0}", message.Host);
                return(ack.ToTransStream());
            }
            var    report = queue.GetReport();
            string result = null;

            if (report != null)
            {
                result = Nistec.Serialization.JsonSerializer.Serialize(report);
            }
            var item = new QueueItem()//MessageState.Ok, result, null, message.Host);
            {
                MessageState = MessageState.Ok,
                Label        = result,
                Host         = message.Host
            };

            item.SetBody(report);
            QLogger.InfoFormat("QueueController GetQueueReport : {0}", result);

            return(item.ToTransStream());
        }
コード例 #6
0
ファイル: PipeManagerServer.cs プロジェクト: nistec/MQueue
        /// <summary>
        /// OnStop
        /// </summary>
        protected override void OnStop()
        {
            base.OnStop();
            QLogger.InfoFormat("PipeServerManager stoped :{0}", PipeName);

            //AgentManager.Queue.Stop();
        }
コード例 #7
0
        public void LoadQueueConfig()
        {
            var config = QueueServerConfig.GetConfig();

            var items = config.RemoteQueueSettings;

            foreach (QueueServerConfigItem item in items)
            {
                //var prop = new QProperties(item.QueueName, item.IsTrans, (CoverMode)item.CoverMode);
                if (item.IsTopic == false)
                {
                    var mq = AddQueue(item);
                    QLogger.InfoFormat("Queue Added: {0}", item.Print());
                }
            }
        }
コード例 #8
0
ファイル: PriorityPersistQueue.cs プロジェクト: nistec/MQueue
        public PriorityPersistQueue(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.Persistent)
            {
                DbLiteSettings settings = new DbLiteSettings()
                {
                    Name       = qp.QueueName,
                    CommitMode = (CommitMode)(int)qp.CommitMode,
                    DbPath     = AgentManager.Settings.QueuesPath
                };
                //settings.SetFast();
                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("PriorityPersistQueue will load items to : {0}", qp.QueueName);
                }
                else
                {
                    QLogger.InfoFormat("PriorityPersistQueue will clear all items from : {0}", qp.QueueName);
                }

                m_db.ReloadOrClearPersist(qp.ReloadOnStart);
            }
        }
コード例 #9
0
        /// <summary>Deletes a queue on a Message Queuing server.</summary>
        /// <param name="queueName">The location of the queue to be deleted. </param>
        public IQueueItem RemoveQueue(string queueName)
        {
            if (queueName == null)
            {
                throw new ArgumentNullException("queueName");
            }
            if (queueName.Length == 0)
            {
                throw new ArgumentException("InvalidParameter", "queueName");
            }
            //RemoveDbQueue(queueName);

            MQueue queue;
            bool   removed = MQ.TryRemove(queueName, out queue);

            QLogger.InfoFormat("RemoveQueue : {0}, {1}", queueName, removed);

            return(QueueItem.Ack(removed?MessageState.Ok: MessageState.OperationFailed, QueueCmd.RemoveQueue, removed? "Queue was removed" : "Queue was not removed", null));
        }
コード例 #10
0
 /// <summary>
 /// OnStart
 /// </summary>
 protected override void OnStart()
 {
     base.OnStart();
     QLogger.InfoFormat("HttpServerListener started :{0}", this.Settings.HostName);
 }
コード例 #11
0
ファイル: PriorityMemQueue.cs プロジェクト: nistec/MQueue
 protected override void OnMessageReceived(QueueItemEventArgs e)
 {
     base.OnMessageReceived(e);
     QLogger.InfoFormat("PriorityMemQueue OnMessageReceived : Host:{0}, Item:{1}", this.Host, e.Item.Print());
 }
コード例 #12
0
ファイル: PriorityMemQueue.cs プロジェクト: nistec/MQueue
 protected override void OnErrorOccured(QueueItemEventArgs e)
 {
     base.OnErrorOccured(e);
     QLogger.InfoFormat("PriorityMemQueue OnError : Host:{0}, message:{1}", this.Host, e.Message);
 }
コード例 #13
0
ファイル: PriorityPersistQueue.cs プロジェクト: nistec/MQueue
 private void M_db_LoadCompleted(object sender, Generic.GenericEventArgs <string, int> e)
 {
     QLogger.InfoFormat("PriorityPersistQueue LoadCompleted : {0}, Count:{1}", e.Args1, e.Args2);
 }
コード例 #14
0
ファイル: PriorityPersistQueue.cs プロジェクト: nistec/MQueue
 private void M_db_ClearCompleted(object sender, EventArgs e)
 {
     QLogger.InfoFormat("PriorityPersistQueue ClearCompleted : {0}", m_db.Name);
 }
コード例 #15
0
ファイル: PriorityPersistQueue.cs プロジェクト: nistec/MQueue
 private void M_db_BeginLoading(object sender, EventArgs e)
 {
     QLogger.InfoFormat("PriorityPersistQueue BeginLoading : {0}", m_db.Name);
 }
コード例 #16
0
 /// <summary>
 /// OnStop
 /// </summary>
 protected override void OnStop()
 {
     base.OnStop();
     AgentManager.StopController();
     QLogger.InfoFormat("PipeServerListener stoped :{0}", PipeName);
 }