Exemplo n.º 1
0
 public override void Initialise(List <MailFolder> folderList)
 {
     Status = MessageProcessorStatus.Initialising;
     NextReader.Initialise(folderList);
     _lastState = new MessageProcessState();
     _queue     = new PCQueue <RawMessageDescriptor, MessageProcessState>(Name)
     {
         ProduceMethod      = ProcessMessage,
         InitialiseProducer = () => _lastState,
         ShutdownProducer   = ShutdownQueue
     };
     _queue.Start();
     Status = MessageProcessorStatus.Initialised;
     Logger.Info("RawToMessageProcessor Initialised");
 }
Exemplo n.º 2
0
 private void ShutdownQueue(MessageProcessState state, Exception ex)
 {
     try
     {
         if (ex != null)
         {
             throw ex;
         }
         Status = MessageProcessorStatus.Completed;
     }
     catch (Exception e)
     {
         Logger.Error("Message Reader failed : " + e.Message, e);
         Status = MessageProcessorStatus.UnknownError;
     }
     Close();
 }
Exemplo n.º 3
0
        private MessageProcessState ProcessMessage(RawMessageDescriptor message, MessageProcessState state)
        {
            if (!message.SourceFolder.Equals(state.CurrentFolder))
            {
                if (!String.IsNullOrWhiteSpace(state.CurrentFolder))
                {
                    Logger.Debug("Processed folder " + state.CurrentFolder + ", read=" + state.CurrentFolderConsumed + ", queued=" + state.CurrentFolderProcessed);
                }
                state.CurrentFolder          = message.SourceFolder;
                state.CurrentFolderProcessed = 0;
                state.CurrentFolderConsumed  = 0;
            }
            state.CurrentFolderConsumed++;
            try
            {
                /* This is now initialised in the initialise method
                 * if (_nextReader.Status == MessageProcessorStatus.Idle)
                 * {
                 *  _nextReader.Initialise();
                 * }
                 */
                _nextReader.Process(ConvertRawToMsg(message));
                state.CurrentFolderProcessed++;
                SucceededMessageCount++;
            }
            catch (Exception ex)
            {
                Logger.Error("Failed to process raw [" + message.SourceId + "] into msg : " + ex.Message, ex);
                FailedMessageCount++;
            }
            finally
            {
                ProcessedMessageCount++;
            }

            return(state);
        }