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.