how transaction works? command queue and event queue? how store event or restore aggregate event by order?