У меня есть система, которая получает сообщения 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, но не уверен, как это работает. Есть идеи?