Back here Bill asked the question about richer message structures than we had at the time. Well we've introduced a few new message payload types and updated the programmer's guide accordingly.
The types are:
(i) BytesMessage - a structured byte stream. (ii) ObjectMessage - a serialized Java object. (iii) TextMessage - a String. (iv) MapMessage - a tuple space <attribute, value) pairs. (v) ControlMessage - reserved for internal ESB control messages.
These are essentially just different views on to the underlying Message payload, but may make it easier to work with/conceptualize complex data structures within the Message. They can all be accessed through the Payload class.