Ejemplo n.º 1
0
        /// <summary>
        /// Called when an event is fired.
        /// </summary>
        /// <param name="o"></param>
        /// <param name="e"></param>
        public void ReceiveEvent(object o, NiawaEventMessageArgs e)
        {
            try
            {
                if (_messageQueue.Count > 10000)
                {
                    //throw away oldest message
                    NiawaEventMessageArgs x = _messageQueue.Dequeue();
                    logger.Warn("[EventConsumer] NiawaEventMessage queue has over 10,000 items; purging oldest item [" + x.SerialID + "]");
                }

                _messageQueue.Enqueue(e);
            }
            catch(Exception ex)
            {
                logger.Error("[EventConsumer] Error while enqueueing NiawaEventMessage: " + ex.Message, ex);
            }
        }
Ejemplo n.º 2
0
        //string messageDetail)
        /// <summary>
        /// Raise a new event.  Any event consumrs that are added (subscribed) will receive the event, and add to their queue to be handled by their impelementor.
        /// </summary>
        /// <param name="messageType"></param>
        /// <param name="message"></param>
        /// <param name="messageDetail"></param>
        /// <param name="nodeID"></param>
        /// <param name="parentNodeID"></param>
        public void RaiseEvent(string messageType, string message, SortedList<string, string> messageDetail, string nodeID, string parentNodeID)
        {
            try
            {
                //if(messageDetail == null) messageDetail = new SortedList<string, string>();

                ////add thread ID to message detail
                //if (messageDetail.ContainsKey("ThreadID")) messageDetail.Remove("ThreadID");
                //if (messageDetail.ContainsKey("ParentThreadID")) messageDetail.Remove("ParentThreadID");
                //messageDetail.Add("ThreadID", threadID);
                //messageDetail.Add("ParentThreadID", parentThreadID);

                //serialize message detail
                string messageDetailSerialized = Newtonsoft.Json.JsonConvert.SerializeObject(messageDetail);

                //get next serial ID
                id = Niawa.Utilities.IdGeneratorUtils.IncrementSerialId(id);

                //create event
                NiawaEventMessageArgs ea = new NiawaEventMessageArgs(_applicationGroup, _applicationName, _applicationInstance, messageType, message, messageDetailSerialized, nodeID, parentNodeID, id.ToString());

                logger.Debug("[EventRaiser " + _applicationGroup + " " + _applicationInstance + "] Raising event " + ea.SerialID);

                //raise event
                if (NiawaEventMessage != null) NiawaEventMessage(this, ea);

            }
            catch (Exception ex)
            {
                logger.Error("[EventRaiser] Error while raising event: " + ex.Message, ex);
            }
        }