Обработка исключений с обменом сообщениями - PullRequest
1 голос
/ 13 декабря 2011

У меня есть система, которая получает сообщения MSMQ и выполняет (почти) анализ в режиме реального времени, используя NEsper . Возможно, что некоторые сообщения приходят с опозданием и, возможно, в другом порядке. Эта ситуация должна быть отмечена и сообщена. Напиши не так работает (метакод):

//shows how many messages came in wrong order
private int error;

//processing function
void MessageReceived(Message m)
{
    //the message is from the `past`
    //if compared to the engine time
    if(m.Occured < currentEngineTime)
    {
        error++; // I think there is a beter way to do this
    }

    // update engine time if required
    //engine time is manually adjusted with
    //each newest message

    //perform analysis of the message    
    //pass message to the engine processing pipeline
}

Как мне лучше справиться с ситуацией, когда сообщение приходит "из прошлого", я не могу выбросить исключение, поскольку мне все еще нужно обработать сообщение, но я хочу, чтобы пользователь знал больше деталей о сообщении, а не просто сказал: что было N неправильно полученных сообщений. Я думал сделать что-то вроде AggregateException, но не уверен, как это работает. Есть идеи?

...