How is the transport layer implemented? Does it use TCP? Or does it build its own reliable transport over UDP? Of another concern is the message delivery latency.
It basically uses TCP. Raw unreliable UDP is also supported on Ruby and Java. TCP or UDP will be enough choices for most of applications. Practically, MessagePack-RPC mainly focuses on cross-language communication, like Ruby frontend <-> C++ backend. So portability is rather important.