This requires message to be comparable. Only fire events when the new message is different to the last one