Denis, what if we remove priority difference for messages and always add new to the end of the queue?
As far as traversing the queue - I don't like O(n) approaches =). So, with adding all messages to the end of the queue (removing prio difference) I would suggest that we save latest 1st lap message and latest 2nd lap message and process metrics message in message worker thread in queue order if they are latest and skip the otherwise. Does this make sense? --Yakov