/// <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); } }
//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); } }