This should probably be a java.util.ConcurrentHashMap since multiple MessageHandler worker threads modify the offsets map.